Skocz do zawartości

Skrypt konwertujący z ISO-8859-2 na UTF-8?


BlackHat

Rekomendowane odpowiedzi

Witam, otóż mam taki dylemat.

Szukałem skryptu, który pomoże mi przerobić poszczególne LITERY, nie słowa. Mam forum oparte na skrypcie vB, gdzie polskie znaki są zapisane w ISO* i muszę te polskie znaki przekonwertować na UTF.

Z tego względu odpadają wszystkie wersje które polegają na zmianie poszczególnych wyrazów, bo jest to niewykonalne w moim wypadku. Tylko zmiana poszczególnych liter wchodzi w grę.

Mimo, że jestem zielony w tej tematyce znalazłem coś takiego:

function iso88592_2utf8($input) {
 static $iso88592;

 if (!count($iso88592)) $iso88592 = array(
  '€', '�', '‚', 'ƒ', '„', '…', '†', '‡', 'ˆ', '‰',
  'Š', '‹', 'Œ', '�', 'Ž', '�', '�', '‘', '’', '“',
  '”', '•', '–', '—', '˜', '™', 'š', '›', 'œ', '�',
  'ž', 'Ÿ', ' ', 'Ä„', '˘', 'Ĺ�', '¤', 'Ä˝', 'Ĺš', '§',
  '¨', 'Ĺ ', 'Ĺž', 'Ť', 'Ĺš', 'Â*', 'Ĺ˝', 'Ĺť', '°', 'Ä…',
  'Ë›', 'Ĺ‚', '´', 'Äž', 'Ĺ›', 'ˇ', '¸', 'ĹĄ', 'ĹŸ', 'ĹĽ',
  'ź', '�', 'Ş', 'ş', 'Ŕ', '�', 'Â', 'Ă', 'Ä', 'Ě',
  'Ć', 'Ç', 'ÄŒ', 'É', 'Ę', 'Ă‹', 'Äš', 'Ă�', 'ĂŽ', 'ÄŽ',
  'Ä�', 'Ĺƒ', 'Ň', 'Ă“', 'Ă”', 'Ĺ�', 'Ă–', 'Ă—', 'Ĺ˜', 'ĹŽ',
  'Ăš', 'Ĺ°', 'Ăœ', 'Ă�', 'Ţ', 'ĂŸ', 'Ĺ•', 'ĂĄ', 'â', 'ă',
  'ä', 'Äş', 'ć', 'ç', 'Ä�', 'ĂŠ', 'Ä™', 'ĂŤ', 'Ä›', 'Ă*',
  'ĂŽ', 'Ä�', 'Ä‘', 'Ĺ„', 'Ĺˆ', 'Ăł', 'Ă´', 'Ĺ‘', 'Ăś', 'á',
  'Ĺ™', 'ĹŻ', 'Ăş', 'Ĺą', 'Ăź', 'Ă˝', 'ĹŁ', 'Ë™');

 return preg_replace("/([\x80-\xFF])/e", '$iso88592[ord($1) - 0x80]', $input);
}

function iso885922utf8($tekscik) {
$tekscik = str_replace("�", "\xC4\x85", $tekscik);
$tekscik = str_replace('�', "\xC4\x84", $tekscik);
$tekscik = str_replace('�', "\xC4\x87", $tekscik);
$tekscik = str_replace('�', "\xC4\x86", $tekscik);
$tekscik = str_replace('�', "\xC4\x99", $tekscik);
$tekscik = str_replace('�', "\xC4\x98", $tekscik);
$tekscik = str_replace('�', "\xC5\x82", $tekscik);
$tekscik = str_replace('�', "\xC5\x81", $tekscik);
$tekscik = str_replace('�', "\xC3\xB3", $tekscik);
$tekscik = str_replace('�', "\xC3\x93", $tekscik);
$tekscik = str_replace('�', "\xC5\x9B", $tekscik);
$tekscik = str_replace('�', "\xC5\x9A", $tekscik);
$tekscik = str_replace('�', "\xC5\xBC", $tekscik);
$tekscik = str_replace('�', "\xC5\xBB", $tekscik);
$tekscik = str_replace('�', "\xC5\xBA", $tekscik);
$tekscik = str_replace('�', "\xC5\xB9", $tekscik);
return $tekscik;
} // iso885922utf8

Są to niby tak samo pracujące skrypty, a jednak zawierają zupełnie inne zmienne? Czemu tak jest? I który jest w takim razie lepszy?

No i oczywiście jak to połączyć w jedną całość tak, żeby skrypt połączył się z bazą danych i w niej pozmieniał wszystkie dane?

Z góry dzięki za pomoc

naughty.gif
Odnośnik do komentarza
Udostępnij na innych stronach

wiecie, może tak... to kolega podrzucił mi te skrypty, bo ja nie znam prawie wcale php... ;)

dlatego, jeśli podajecie mi jakieś wyjście, rozwiązanie to mi to niestety niewiele mówi. Dlatego, jakby mi ktoś napisał coś takiego i wyjaśnił jak to ma działać, byłbym wdzięczny.

naughty.gif
Odnośnik do komentarza
Udostępnij na innych stronach

Wykorzystując funkcję iconv przykład użycia:

$tekst='jakiś tekst w iso-8859-2 bla bla bla';
$tekstWyjsciowy=iconv('iso-8859-2','utf-8',$tekst);

W zmiennej $tekst jest tekst w iso-8859-2 po wywołaniu iconv w zmiennej $tekstWyjsciowy będzie ten tekst zakodowany w utf-8. Nie wiem co więcej można tu napisać.

Więcej informacji o iconv będzie pod adresem w manualu tutaj.

Odnośnik do komentarza
Udostępnij na innych stronach

głupio zrobiłem, bo powinienem to napisać od początku...

szukałem tego skryptu, bo muszę przerobić poszczególne LITERY nie słowa. Mam forum oparte na skrypcie vB, gdzie polskie znaki są zapisane w ISO* i muszę te polskie znaki przerobić.

Z tego względu odpadają wszystkie wersje które polegają na zmianie poszczególnych wyrazów, bo jest to niewykonalne w moim wypadku. Tylko zmiana poszczególnych liter wchodzi w grę.

naughty.gif
Odnośnik do komentarza
Udostępnij na innych stronach

Widzę że co osoba to kolejne rozwiązanie zamiany polskich znaków ;)

Metod widziałem bardzo dużo, i każdy może podejść do tematu inaczej dlatego kody mogą sie róznić.

Najlepsza jest ta metoda która umiesz użyć , a potem ta którą rozumiesz a potem ta która jest najszybsza ;)

Odnośnik do komentarza
Udostępnij na innych stronach

NIe rozumiem dlaczego nie możesz zastosowac $wyjscie=iconv('iso-8859-2','utf-8',$wejscie); ?

Moze nie masz tej biblioteki w PHP ? Sprawdz w phpinfo() powinno być : iconv

I jeszcze jedno pamiętaj o wlasciwym zapisie - kodowaniu zapisywanego pliku Enconding: UTF-8. Jeśli w edytorze zapiszesz jako ANSI [a to jest ustawione standardowo] to masz krzaki u klienta ;) Sam kiedys przez to wlosy wyrywalem, bo o tym jeszcze nie wiedzielem.

Jesli jest to plik php mozesz dla wysylac nagłowek informujecy klienta o kodowaniu danych dokumentu

<?php
header("Content-Type: text/html; charset=utf-8");
// dlaszy kod
?>

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

A jak wygląda to?

<?php
set_time_limit(0);
mysql_connect("localhost","user","passs");
mysql_select_db (database);

function iso2uft8($string) {
 $iso2utf = array(
	  "\xb1" => "\xc4\x85", "\xa1" => "\xc4\x84",
	  "\xe6" => "\xc4\x87", "\xc6" => "\xc4\x86",
	  "\xea" => "\xc4\x99", "\xca" => "\xc4\x98",
	  "\xb3" => "\xc5\x82", "\xa3" => "\xc5\x81",
	  "\xf3" => "\xc3\xb3", "\xd3" => "\xc3\x93",
	  "\xb6" => "\xc5\x9b", "\xa6" => "\xc5\x9a",
	  "\xbc" => "\xc5\xba", "\xac" => "\xc5\xb9",
	  "\xbf" => "\xc5\xbc", "\xaf" => "\xc5\xbb",
	  "\xf1" => "\xc5\x84", "\xd1" => "\xc5\x83"
);

return strtr($string, $iso2utf);  
}
?>

naughty.gif
Odnośnik do komentarza
Udostępnij na innych stronach

A jak wygląda to?
Masz podane sposoby wiec czego jeszcze nie rozumiesz !

Nie odbierz mnie złośliwie, ale proponuje odpocznij sobie od PHP, bo takie kodowanie po omacku na niewiele sie zdaje :)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Jak mi rure wywala to dzwonie po hydraulika. Jak żarówkę to sam potrafie wymienić... Nie wiesz jak, nie potrafisz wytłumaczyć, albo dajesz za mało danych, żeby można było Ci pomóc to nie oczekuj cudów.

Odnośnik do komentarza
Udostępnij na innych stronach

Pytanie dla znawców :)

Eksport bazy, potem jakis konwerter a la https://www.optymalizacja.com.pl/konwerter/ potem import.

Czy to będzie działać?

Wiem, że teoretycznie są lepsze sposoby, ale jak autor tematu nie jestem na TY z php i mysql...

Warning: move_uploaded_file(/home/erbit3/public_html/optymalizacja/tmp/baza.sql-431057236-84.205.26.16._) [function.move-uploaded-file]: failed to open stream: No such file or directory in /var/www/optymalizacja.com.pl/www/konw/konwe.php on line 20

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpyELbWm' to '/home/erbit3/public_html/optymalizacja/tmp/baza.sql-431057236-84.205.26.16._' in /var/www/optymalizacja.com.pl/www/konw/konwe.php on line 20

Warning: file(/home/erbit3/public_html/optymalizacja/tmp/baza.sql-431057236-84.205.26.16._) [function.file]: failed to open stream: No such file or directory in /var/www/optymalizacja.com.pl/www/konw/konwe.php on line 21

Warning: fopen(/home/erbit3/public_html/optymalizacja/tmp/baza.sql-431057236.txt) [function.fopen]: failed to open stream: No such file or directory in /var/www/optymalizacja.com.pl/www/konw/konwe.php on line 24

Warning: fputs(): supplied argument is not a valid stream resource in /var/www/optymalizacja.com.pl/www/konw/konwe.php on line 28

Warning: fclose(): supplied argument is not a valid stream resource in /var/www/optymalizacja.com.pl/www/konw/konwe.php on line 31

ERROR: Plik nie odnaleziony.
/home/erbit3/public_html/optymalizacja/tmp/baza.sql-431057236.txt

Chyba nie działa :)

404.tf

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