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: 3 měsíce
|
0