在PHP中,我有以下代码:
<?php
echo "€<br>";
echo ord("€") . "<br>";
echo chr(128) . "<br>";
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
€
128
?
Run Code Online (Sandbox Code Playgroud)
为什么chr功能不能为我提供€符号?我怎么能得到€?我真的需要这个工作.提前致谢.
chr并且ord仅适用于单字节 ASCII 字符。进一步来说ord仅查看其参数的第一个字节。
欧元符号是 UTF-8 中的三字节字符:0xE2 0x82 0xAC,因此ord("\xe2\x82\xac")(使用 UTF-8 符号)返回 226 (0xE2)
对于 ISO-8859-1 (latin1) 字符集中也存在的字符,您可以使用utf8_encode()和utf8_decode(),但不幸的是 \xe2\x82\xac 符号不包含在那里,因此utf8_decode(\'\xe2\x82\xac\')将返回“?” 并且无法转换回来。
TL;DR:您不能将ordandchr与 UTF-8 等多字节编码一起使用
| 归档时间: |
|
| 查看次数: |
748 次 |
| 最近记录: |