| Autor | Zpráva | ||
|---|---|---|---|
| jirka2 Profil |
Ahoj, mám takový test a problém. Ve skriptu mám nastaveno
mb_internal_encoding("UTF-8"); pak zkoumám bajty znaku 'ě' (viz ě)
$val = unpack('H*', "ě");
echo $val[1];echo dechex(mb_ord("ě", "UTF-8"));echo dechex(mb_ord("ě", "UTF-16"));Vypadá to, jako by to bylo v PHP prohozené. Nebo jsem něco nepochopil... Díky za komentáře a rady. zdraví Jirka |
||
| Firibix Profil |
#2 · Zasláno: 30. 8. 2024, 15:19:51
Reakce na jirku2:
Funkce mb_ord vrací Unicode codepoint daného znaku, to je něco jiného, než číselná hodnota znaku v nějakém konkrétním kódování. Druhý argument funkce mb_ord určuje, v jakém kódování je znak v prvním argumentu.
Znak ě má přiřazený Unicode codepoint U+011B, v UTF-8 kódování je to sekvence 0xC4 0x9B a v UTF-16 0x11B. Následující příklad tedy odpovídá tomu, jak je mb_ord popsána v dokumentaci.
echo dechex(mb_ord("\xc4\x9b", "UTF-8")); // vrací 11b
echo dechex(mb_ord("\x1\x1b", "UTF-16")); // vrací 11b |
||
| jirka2 Profil |
#3 · Zasláno: 30. 8. 2024, 16:19:44
Firibix:
Díky, to je ono. |
||
|
Časová prodleva: 2 roky
|
|||
0