当我执行以下代码时,它返回非标准字符,那么我们如何删除它或获取原始字符串?
header('Content-type: text/html; charset=utf-8');
$String = "à¸?่à¸à¸•à¸±à¹‰à¸‡à¹€à¸¡à¸·à¹ˆà¸";
echo $String;
输出:�?่อตั้งเมื่อ
需要实际结果:ก่อตั้งเมื่อ
答案 0 :(得分:2)
您的字符串à¸?่à¸à¸•à¸±à¹‰à¸‡à¹€à¸¡à¸·à¹ˆà¸
无效utf-8。这就是�
出现的原因 - 浏览器不知道如何解释它。
正如其他人所指出的那样,第三个位置上的问号可能就是问题所在。
错误字符串的前三个字节是e0 b8 3f
(3f
是ascii代码?
)。我不知道任何泰语,但THAI CHARACTER KO KAI的字节序列看起来非常相似,应该是e0 b8 81
。
答案 1 :(得分:0)
你提到字符包围为utf-8,其中字符串未编码为utf-8。这就是"?"标记出现在输出中而不是预期输出中。
答案 2 :(得分:0)
首先,为了不被编码问题弄糊涂,你真的想阅读以下文章:http://kunststube.net/encoding/
其次,我刚刚做了以下事情:
$ vim ~/sandbox/php/encoding.php
( inserted your code verbatim )
$ cd ~/sandbox/php/
$ php -S localhost:1200
在Firefox {@ 3}}页面中打开后,我得到了$String
的内容。
我的意思是我得到以下字符:
à¸?่à¸à¸•à¸±à¹‰à¸‡à¹€à¸¡à¸·à¹ˆà¸
这意味着您的浏览器无论如何都不知道如何呈现您输入的字符。字符串本身正在以UTF-8编码。您必须将浏览器设置为将文本显示为UTF-8,或者可能安装支持这些符号的字体。
另外,如果你想输出一些带有UTF-8梵文符号的文字,你只需要在PHP中满足以下要求: