我有一个从数据库中获取的 ISO 字符串,当我对它进行 utf8_encode 时,我得到的是\u00f6 而不是 Ö。这混淆了 ajaxes 这个 PHP 脚本的 javascript/html。为什么会有\u00f6 而不是 Ö?如何获得 Ö?
编辑: 好的,我做了一些更多的实验,结果证明这是由 utf8_encode 和 json_encode 的组合引起的。尽管如果我根本不使用 utf8_encode,该值在 json 中将为 null。
json_encode(array("city"=>utf8_encode("göteborg")))
最佳答案
utf8_encode
不会将字符编码为 \uxxxx
,因为您自己发现这是 json_encode
执行此操作。这很好,因为 JSON 格式指定了此行为。如果您的客户端正确地将 JSON 字符串解码为 Javascript 数据类型,则 \uxxxx
转义符将转换为正确的 Unicode 字符。
至于 json_encode
如果您的字符串是 Latin1 编码则丢弃字符:它没有在手册页上明确说明,但 Javascript 和 JSON 完全基于 Unicode,所以我怀疑 Latin1 是一种无效且意外的编码与 JSON 字符串一起使用,因此它会中断。
关于php utf8_encode - 字符前面加上\u,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7684929/