Konwertowanie polskich znaków diaktrycznych na iso-8859-2


(Emblemat) #1
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
<style>
td{
background-color:black;
color:white;
padding-left:20px;
padding-right:20px;
text-align:center;
}
</style>

<table>
<tr><td rowspan="2">mała litera</td><td colspan="2">windows-1250</td><td colspan="2">iso-8859-2</td></tr>
<tr><td>dec</td><td>hex</td><td>dec</td><td>hex</td></tr>
<?php
$zmienna = 'ąćęłńóśźżĄĆĘŁŃÓŚŹŻ';
$equals = strlen($zmienna);
for($i=0;$i<$equals;$i++){
echo"<tr><td>{$zmienna[$i]}</td>";
echo'<td>'. ord($zmienna[$i]) .'</td>';
echo'<td>'. bin2hex($zmienna[$i]) .'</td>';
echo'<td>'. decbin($zmienna[$i]) .'</td>';

}


?>

</table>

<BR><BR><BR>
<?php

$had = 'ą';
echo ord($had);



?>

Wiem, że dla windows-1250 są operatory takie jak: bin2hex i odr. A jak to zrobić, aby konwenterować na ISO-8859-2?

Nie mogę znaleźć takich operatorów. Może być jeszcze konwertacja z windows-1250 na iso.


(kostek135) #2

Mylisz pojęcia.

dec, bin, hex nie mają nic wspólnego z windows-1250, iso-8859-2 czy utf-8. Te pierwsze oznaczają bazę liczby, natomiast te drugie, oznaczją kodowanie dokumentu. Po prostu musisz ustawić kodowanie w swoim edytorze + w HTML-u

 

To nie są operatory tylko funkcje. Operatorem jest np. "+" w dodawaniu.

PS

Nie jestem pewny, co chcesz zrobić, czy chodzi ci o zmianę kodowania strony, czy napisanie konwertera, ale może przyda się to: http://www.php.net/manual/pl/function.iconv.php


(Emblemat) #3
<?php

$string = ord("ą");
var_dump($string);




?>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />

Zakodowałem w iso, ale gdy sprawdzam działanie skryptu to pisze: int(185), czyli koduje mi w Windows, a nie w iso.


(kostek135) #4

Czyli chodzi ci o wewnętrzne ustawienia kodowania w serwerze?

To powinno pomóc: http://stackoverflow.com/questions/12710842/php-internal-encoding


(Emblemat) #5

Chcę sprawdzać sobie jaki znak w kodowaniu zwykłym odpowiada w kodowaniu windows-1250,iso-8859-2.

Teraz podam przykład, bo niefortunnie to opisałem.

<?php
$polskie_win = "\xb9\xe6\xea\xb3\xf1\xf3\x9c\x9f\xbf\xa5\xc6\xca\xa3\xd3\x8c\x8f\xaf";
$polskie_iso = "";

$a= 'ą';

var_dump(bin2hex($a));
?>

var_dump'em sprawdzam sobie, jaki znak jest w kodowaniu windows-1250. Dla ą jest to znak b9. Teraz chcę to samo zrobić. Chcę wiedzieć jaki znak dla iso kryje się pod ą.


(kostek135) #6

Więc tak

var_dump(ord(iconv("windows-1250", "ISO-8859-2", "\xb9")));

ostatni napis musi być w kodowaniu, które zostało podane jako pierwszy parametr. Takie coś zwraca mi 177, co jest zgodne z tym http://pl.wikipedia.org/wiki/Kodowanie_polskich_znaków