Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Konwersja kodowania znakow
Forum PHP.pl > Forum > PHP
Bastion
Witam,

Mam pytanie, przypuscmy ze chce konwertowac ciagi tekstowe kodowaniem
z jednego dowolnego systemu na inny - to ktore rozszerzenie nadaje sie do tego
obecnie najlepiej pod wzgledem szybkosci ale i dostepnosci ? iconv czy mb_string ?
Czy nie lepszym rozwiazaniem byloby stworzenie wlasnych tablic stron kodowych i
na ich podstawie dokonywac konwersji ? (glownie dotyczy stron kodowych obslugujacych
polskie znaki czyli iso-8859-2 , wincp-1250 oraz utf-8)
mike
Największą wadą programistów jest nadmierna skłonność do pisania wszystkiego od początku.
A przecież często sa gotowe rozwiązania.

Owszem własna tablica jest rozwiązaniem idealnym na serwerze, na którym nie ma zainstalowanego iconva i mb_stringa. Ale to niezwykła żadkość. Biblioteki te są zawsze winksmiley.jpg

Jestem za iconvem.
Bastion
racja, ale przesledz taki scenraiusz , ze ktos nie bedzie mial iconva - czyli wypada umiescic wlasna "awaryjna" tablice. Wiec jesli juz to po co miec pare rozwiazan jak pierwsze sprawdzi sie w kazdym przypadku i konfiguracji (tylko polskie ogonki) . ale skoro twierdzisz ze iconv jest w wiekszosci konfiguracji smile.gif to wykorzystam wlasnie jego.
php programmer
Znalazłem ostatnio w sieci fajną funkcję konwerująca
zaraz ją podepnę.

  1. <?php
  2.  
  3.   define('UTF8_TO_ISO88592', 1);
  4.   define('ISO88592_TO_UTF8', 2);
  5.   define('WIN1250_TO_UTF8', 3);
  6.   define('UTF8_TO_WIN1250', 4);
  7.   define('ISO88592_TO_WIN1250', 5);
  8.   define('WIN1250_TO_ISO88592', 6);
  9.  
  10.   function plCharset($string, $type = WIN1250_TO_ISO88592) {
  11.  
  12.     $win2utf = array(
  13.       "\xb9" => "\xc4\x85", "\xa5" => "\xc4\x84",
  14.       "\xe6" => "\xc4\x87", "\xc6" => "\xc4\x86",
  15.       "\xea" => "\xc4\x99", "\xca" => "\xc4\x98",
  16.       "\xb3" => "\xc5\x82", "\xa3" => "\xc5\x81",
  17.       "\xf3" => "\xc3\xb3", "\xd3" => "\xc3\x93",
  18.       "\x9c" => "\xc5\x9b", "\x8c" => "\xc5\x9a",
  19.       "\xbf" => "\xc5\xbc", "\x8f" => "\xc5\xbb",
  20.       "\x9f" => "\xc5\xba", "\xaf" => "\xc5\xb9",
  21.       "\xf1" => "\xc5\x84", "\xd1" => "\xc5\x83"
  22.     );
  23.     $iso2utf = array(
  24.       "\xb1" => "\xc4\x85", "\xa1" => "\xc4\x84",
  25.       "\xe6" => "\xc4\x87", "\xc6" => "\xc4\x86",
  26.       "\xea" => "\xc4\x99", "\xca" => "\xc4\x98",
  27.       "\xb3" => "\xc5\x82", "\xa3" => "\xc5\x81",
  28.       "\xf3" => "\xc3\xb3", "\xd3" => "\xc3\x93",
  29.       "\xb6" => "\xc5\x9b", "\xa6" => "\xc5\x9a",
  30.       "\xbc" => "\xc5\xba", "\xac" => "\xc5\xb9",
  31.       "\xbf" => "\xc5\xbc", "\xaf" => "\xc5\xbb",
  32.       "\xf1" => "\xc5\x84", "\xd1" => "\xc5\x83"
  33.     );
  34.  
  35.     if ($type == ISO88592_TO_UTF8)
  36.       return strtr($string, $iso2utf);
  37.     if ($type == UTF8_TO_ISO88592)
  38.       return strtr($string, array_flip($iso2utf));
  39.     if ($type == WIN1250_TO_UTF8)
  40.       return strtr($string, $win2utf);
  41.     if ($type == UTF8_TO_WIN1250)
  42.       return strtr($string, array_flip($win2utf));
  43.     if ($type == ISO88592_TO_WIN1250)
  44.       return strtr($string, "\xa1\xa6\xac\xb1\xb6\xbc",
  45.         "\xa5\x8c\x8f\xb9\x9c\x9f");
  46.     if ($type == WIN1250_TO_ISO88592)
  47.       return strtr($string, "\xa5\x8c\x8f\xb9\x9c\x9f",
  48.         "\xa1\xa6\xac\xb1\xb6\xbc");
  49.   }
  50.  
  51. ?>

u mnie działa bez zarzutu, wystarczy includować i nie przeba sie bawić z iconvie
w
Bastion
ja bym powiedzial ze uzylem wlasnie iconva by sie nie "bawic", razem z class5.babel dziala doskonale smile.gif
son
Czy tą funkcję można wykorzystać do ucieczki od polskich znaków? Bawiłem się z tą funcją iconv ale nie wyszło.
emp
uzwajac iconv do konwersji tresci listu z utf na iso wystepowaly bledy np ucinal mi skonwertowana tresc takze ja tego uzywac nie mam zamiaru...

imap_mime_header_decode do odkodowania naglowkow tez sie sypie... jezeli chodzi o php to wiele rzeczy okazuje sie ze trzeba zrobic samemu jak chcesz byc pewny ze to bedzie dobrze dzialac.. dobija mnie ten jezyk i nie udokumentowane, kiepsko dzialajace biblioteki oraz funkcje
mariuszn3
Jakie są różnice pomiędzy iconv a mbstring? Dlaczego mike_mech wybrałbys iconv? Taka lista pros and cons by mi się przydała. Po prostu jestem ciekaw, dopiero teraz zauważyłem, że są dwie biblioteki w php o tej samej funkcjonalnosci. Sam do tej pory korzystam z mb_string. Z góry dzięki za info.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.