Emblemat
(Emblemat)
25 Maj 2014 12:45
#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.
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 + <meta charset="…" /> 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
(Emblemat)
25 Maj 2014 13:28
#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.
Czyli chodzi ci o wewnętrzne ustawienia kodowania w serwerze?
To powinno pomóc: http://stackoverflow.com/questions/12710842/php-internal-encoding
Emblemat
(Emblemat)
25 Maj 2014 16:18
#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 ą.
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