Jak zmienić kodowanie polskich znaków w tekscie na standard Unicode (UTF 8) i odwrotnie z UTF 8 na ISOˆ59 2


[PHP] Jak zmienić kodowanie polskich znaków w tekscie na standard Unicode (UTF-8) i odwrotnie: z UTF-8 na ISO-8859-2?

0x01 graphic

Chcesz szybko i efektywnie zmienić kodowanie polskich znaków ze standardu ISO 8859-2 lub Windows na Unicode i odwrotnie.

0x01 graphic

Standard zapisu znaków narodowych Unicode pozwala na umieszczanie na jednej stronie znaków diaktrycznymi w wielu językach. Obsługują go wszystkie przeglądarki (bodajże od wersji 4.x).

W wielu wypadkach to czasem jedyny sposób zakodowania polskich znaków, aby były poprawnie interpretowane w różnych programach, urządzeniach (np. tel. komórkowe) i dokumentach. Zobacz jak przekonwertować tekst do standardu Unicode na dwa sposoby - za pomocą encji i binarnie.

Konwersja z ISO 8859-2 do Unicode za pomocÄ… encji, czyli symbolu &#numer;

<?

$iso = array("177","230","234","179","241","243","182","188","191",

"161","198","202","163","209","211","166","172","175");

$uni = array("&#261;","&#263;","&#281;","&#322;","&#324;",

"&#243;","&#347;","&#378;","&#380;",

"&#260;","&#262;","&#280;","&#321;","&#323;","&#211;",

"&#346;","&#377;","&#379;");

$x="żółw szedł drogą";

for ($i=0;$i<count($iso);$i++) $iso[$i]="/".chr($iso[$i])."/";

$x = preg_replace($iso, $uni, $x);

echo $x; // &#380;&#243;&#322;w szed&#322; drog&#261;

?>

Konwersja ze standardu Windows do Unicode za pomocÄ… encji:

<?

$win = array("185","230","234","179","241","243","156","159","191",

"165","198","202","163","209","211","140","143","175");

$uni = array("&#261;","&#263;","&#281;","&#322;","&#324;",

"&#243;","&#347;","&#378;","&#380;",

"&#260;","&#262;","&#280;","&#321;","&#323;","&#211;",

"&#346;","&#377;","&#379;");

$x="żółw szedł drogą";

for ($i=0;$i<count($win);$i++) $win[$i]="/".chr($win[$i])."/";

$x = preg_replace($win, $uni, $x);

echo $x; // &#380;&#243;&#322;w szed&#322; drog&#261;

?>

Zasada działania obu programów jest identyczna. Pierwsza tablica ($iso lub $win) przechowuje kody liter w standardzie ISO lub Windows. Druga tablica przechowuje znaki zakodowanie w standardzie Unicode. Nasz napis znajduje się w zmiennej $x.

Jedną z najszybszych metod jest wykorzystanie funkcji preg_replace(), której jako parametry można przekazać tablice. Zamieni one znaki do standardu Unicode.

Pierwsza pętla powoduje, że każdy element tablicy uzupełniany jest o ukośniki, które niezbędne są dla tablicy wejściowej ponieważ musi być ona zapisana jako wyrażenie regularne. Tablice zapisane są jako kody ASCII i w pętli zamienianie są od razu na znaki.

Czemu od razu nie wpisałem znaków? Można je umieścić bezpośrednio, jednak nie każdy system umożliwia poprawne ich wpisanie lub wyświetlenie. Liczby można podać bez narażania się na kłopoty systemowe.

Zamiana do postaci binarnej wygląda identycznie, tylko musisz zamiast poprzedniej tabeli $uni wstawić poniższą:

$uni = array("\xC4\x85", "\xC4\x87", "\xC4\x99", "\xC5\x82", "\xC5\x84",

"\xC3\xB3", "\xC5\x9B", "\xC5\xBA", "\xC5\xBC",

"\xC4\x84", "\xC4\x86", "\xC4\x98", "\xC5\x81", "\xC5\x83",

"\xC3\x93", "\xC5\x9A", "\xC5\xB9", "\xC5\xBB");

Kodowanie binarne jest wydajniejsze, bo zamienia litery na poziomie bajtów, a nie znaków zapisanych na stronie.

Aby przekonwertować znaki z binarnego Unikodu (UTF-8) na ISO-8859-2 musisz wykonać czynność odwrotną:

<?

$iso = array("177","230","234","179","241","243","182","188","191",

"161","198","202","163","209","211","166","172","175");

$uni = array("\xC4\x85", "\xC4\x87", "\xC4\x99", "\xC5\x82", "\xC5\x84",

"\xC3\xB3", "\xC5\x9B", "\xC5\xBA", "\xC5\xBC",

"\xC4\x84", "\xC4\x86", "\xC4\x98", "\xC5\x81", "\xC5\x83",

"\xC3\x93", "\xC5\x9A", "\xC5\xB9", "\xC5\xBB");

$x="żółw szedł drogą"; // zakodowane w UTF-8 binarnym

for ($i=0;$i<count($uni);$i++) $uni[$i]="/".$uni[$i]."/";

for ($i=0;$i<count($iso);$i++) $iso[$i]=chr($iso[$i]);

$x = preg_replace($uni, $iso, $x);

echo $x; // ten sam napis w ISO-8859-2

?>

Aby przekonwertować znaki z Unikodu (UTF-8) zapisanego za pomocą encji na ISO-8859-2 musisz wykonać podobny skrypt:

<?

$iso = array("177","230","234","179","241","243","182","188","191",

"161","198","202","163","209","211","166","172","175");

$uni = array("&#261;","&#263;","&#281;","&#322;","&#324;",

"&#243;","&#347;","&#378;","&#380;",

"&#260;","&#262;","&#280;","&#321;","&#323;","&#211;",

"&#346;","&#377;","&#379;");

$x="&#380;&#243;&#322;w szed&#322; drog&#261;"; // UTF-8 za pomocÄ… encji

for ($i=0;$i<count($uni);$i++) $uni[$i]="/".$uni[$i]."/";

for ($i=0;$i<count($iso);$i++) $iso[$i]=chr($iso[$i]);

$x = preg_replace($uni, $iso, $x);

echo $x; // żółw szedł drogą (w ISO-8859-2)

?>



Wyszukiwarka

Podobne podstrony:
Jak zmieniał się wizerunek kobiety w literaturze na przestrzeni wieków, Wypracowania- przykłady
Jak zmieniały się kanony kobiecego piękna na przestrzeni wieków
Jak zmienic z RED na BRO
jak zmienic liczby na kod BCD dinary coded decimal, PHP Skrypty
jak zmienic wyglad wiadomosci na facebooku
Opowiesci zmieniacza Jak zmienic swoje zycie na lepsze
Opowiesci zmieniacza Jak zmienic swoje zycie na lepsze zaduch
Jak zmienić nasz system na ładniejszy bez zamulania kompa
O pochodzeniu i zmianie znaczenia wyrazu kobieta na przestrzeni dziejów, czyli jak zmieniała się
Opowiesci zmieniacza Jak zmienic swoje zycie na lepsze
Opowiesci zmieniacza Jak zmienic swoje zycie na lepsze zaduch
jak zmienic ikony na pulpicie windows xp
Opowiesci zmieniacza Jak zmienic swoje zycie na lepsze zaduch
Opowiesci zmieniacza Jak zmienic swoje zycie na lepsze zaduch
Opowiesci zmieniacza Jak zmienic swoje zycie na lepsze zaduch
Opowiesci zmieniacza Jak zmienic swoje zycie na lepsze zaduch(1)
biznes i ekonomia kariera pod kontrola jak zmienic swoje zycie zawodowe na lepsze beata rzepka ebook
Dowiedz się jak Iluminaci inżynierzy społeczni, wpływają na Ciebie , jak zmieniają społeczeństwo, b

więcej podobnych podstron