Skocz do zawartości

Konwersja latin1 - utf8


admin

Rekomendowane odpowiedzi

Narzędzie do konwersji latin1 do utf8

Po co?

Może miał ktoś kiedyś problem ze źle wyeksportowaną bazą danych (w latin1). Robiły się krzaki, a jedyną metodą na to, było użycie ctrl+r w edytorze :) Mi się tak dziś znów przytrafiło.

Więc:

To narzędzie konwertuje pliki sql,txt zapisane(wyeksportowane) w latin1 do kodowania utf8.

Obsługa:

Należy wrzucić plik wejściowy, źle zakodowany i otrzymujemy plik wynikowy.

Skasować plik

Może komuś się przyda

Reklama internetowa - marketing w wyszukiwarkach || Pozycjonowanie Poznań - skutecznie i profesjonalnie || Słownik online Slowka.info - tłumacz online

Odnośnik do komentarza
Udostępnij na innych stronach

Bardzo fajna rzecz ale trzeba uważać.

Miałem taki problem z drupalową bazą (i365.pl przy przenoszeniu serwerów do europy schrzanili mi kodowanie i nie kwapili się odkręcać). Spróbowałem napisać coś podobnego, ale za każdym razem rozwalało mi bazę. Okazało się, że ciągi znaków na które mi pozamieniało polskie krzaki występują też w 'naturalnej' postaci (w tabeli locale).

Do sedna: :)

Przed użyciem narzędzia na większej bazie polecam podzielić plik sql na poszczególne tabele i konwertować tylko te, które trzeba.

Jestem w potrzebie - sprzedaje
cenne domeny regionalne za ułamek wartości
tylko do końca tyg. < link do ogłoszenia >

Odnośnik do komentarza
Udostępnij na innych stronach

Ciekawe jakie masz ograniczenie na POST pliku :)

Przy małych plikach to może i to ma rację bytu przy bazie danych która ma 100M to już bym wolał zrobić to na lokalnej maszynie:

#!/bin/php
<?php
$arrRemove = array( ‘Ą’,'Ć’,'Ę’,'Ł’,'Ń’,'Ó’,'Ś’,'Ż’,'Ź’,'ą’,'ć’,'ę’,'ł’,'ń’,'ó’,'ś’,'ż’,'ź’ );
$arrInsert = array( ‘A’,'C’,'E’,'L’,'N’,'O’,'S’,'Z’,'Z’,'a’,'c’,'e’,'l’,'n’,'o’,’s’,'z’,'z’ );

$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
while (!feof($handle)) 
  {
	$buffer = fgets($handle, 4096);

	$buffer = str_replace( $arrRemove, $arrInsert, $buffer );

	echo $buffer;
}
fclose($handle);
}
?>

Przykład dotyczy co prawda zamiany ogonków na tekst bez ogonków

ale po drobnych zmianach może sie nadac do konwersji :)

Trzeba tylko sobie zbudować tablice konwersji :)

Odnośnik do komentarza
Udostępnij na innych stronach

Do wszelkiego rodzaju konwersji jakichkolwiek plików tekstowych na maszynie lokalnej

Przeholowałeś :) Grzegżółka umożliwia tylko konwersje kodowania, a i to w dość klasycznych przypadkach. Z latin1->utf8 może sobie nie poradzić. Na pewno nie poradzi sobie z tym co robi skrypt Maksimusa (zamiana na literki bez ogonków).

Co nie zmienia faktu, że program się przydaje. Ostatnio konwertowałem sobie kilka stronek klientów iso8859-2 -> utf8 i śmigał aż miło.

Jestem w potrzebie - sprzedaje
cenne domeny regionalne za ułamek wartości
tylko do końca tyg. < link do ogłoszenia >

Odnośnik do komentarza
Udostępnij na innych stronach

Niestety :)

100MB za duzo...

Łyknie chyba do 8MB...ograniczenia tego hostingu

Jak ktos chce do siebie na lokala to część funkcji lezy u mnie:

Wycinek skryptu

Otwierać np. za pomocą pspada w kodowaniu utf8

Reklama internetowa - marketing w wyszukiwarkach || Pozycjonowanie Poznań - skutecznie i profesjonalnie || Słownik online Slowka.info - tłumacz online

Odnośnik do komentarza
Udostępnij na innych stronach

Odnośnie pytania co do rozmiarów danych:

Nie tworzę żadnych zmiennych ot odczytuje jedna linie i wypluwam ją na konsolę

mozna to sobie skierowac do pliku i masz gotowy nowy plik :)

php -f skrypt.php > nowy_SQL.SQL

Z programów gotowych to jeszcze był by :

iconv pod linux albo windows. (tam jest masa róznych rodzajów kodowań)

tylko nie wiem czy przewidzieli że ktoś może chcieć przekodować UTF -> LATIN1 -> LATIN2

Odnośnik do komentarza
Udostępnij na innych stronach

iconv nie jest w stanie skonwertować czegoś czego nie rozumie, i uzna to za błąd

weź sobie dla testów zamien UTF-8 (z polskimi znakami) na latin1

iconv -c -f utf-8 -t latin1 plik_in.txt -o plik_out.txt

ogólnie pomysł konwertowania polskich znaków w latin1 uznaje raczej za kiepski zart :) bo nawet nie wiedziałbym jak to zrobić :) taki numer

Odnośnik do komentarza
Udostępnij na innych stronach

iconv, mb_convert_encoding - w żaden sposób u mnie nie działał....

Albo tak: nie dla tych danych, które miałem

U mnie było to dokładnie latin1_swedish

Reklama internetowa - marketing w wyszukiwarkach || Pozycjonowanie Poznań - skutecznie i profesjonalnie || Słownik online Slowka.info - tłumacz online

Odnośnik do komentarza
Udostępnij na innych stronach

tłumacze jeszcze raz :)

iconv, mb_convert_encoding operują na tablicach konwersji które mają sens.

Jezeli ktoś robi BEZSENSU czyli np. UTF-8 -> LATIN1 a potem chce to z powrotem do UTF-8 czy latin2 to na takich to tylko mozno pasem po tyłko może pomoże :D

iconv, mb_convert_encoding jest w stanie zamienić np. UTF-8 -> CP852 -> CP1250 ->LATIN2 -> UTF-8

w LATIN1 NIE MA POLSKICH ZNAKÓW więc nie można ich standardowymi metodami odtworzyć za pomocą iconv, mb_convert_encoding trzeba jak w przykładzie wyżej napisać własny dekoder :)

Trzeba tylko sobie zbudować tablice konwersji
Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 rok później...

A ja do tematyu bo nadal wiele baz używa latin1 i nie wiedzą jak z tego wybrnąć - sporo ogólnych informacji ISO-8859-1 latin1 ISO-8859-2 latin2 Windows-1250 cp-1250 UTF-8 utf8, oraz dodatkowo cały wpis poświęcony latin1 i chyba objaśniający o co chodzi O co chodzi z latin1 i dlaczego działają w nim polskie znaki, objaśniłem dlaczego są krzaki zamiast polskich liter, konwerter obsługuje wszystkie znaki (nie tylko polskie) czyli 170+ znaków przy konwersji z latin1 + parę innych kodowań.

Nie mam pojęcia dlaczemu wyleciały i mają filtera Polskie znaki w adresach Joomla od nowa napisane, czytelnie i logicznie. Dylemat adres z www czy bez? Powinno to rozwiać wszelkie wątpliwości.

Naprawiam kodowanie [krzaki, chińskie znaki, polskie znaki] dowiedz się także czymże jest kodowanie znaków bo to podstawa.

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności