【发布时间】:2013-01-09 12:53:42
【问题描述】:
我一直在阅读一些解决方案,但尚未设法使任何工作。
我有一个从 API 调用中读取的 JSON 字符串,它包含 Unicode 字符 - 例如 \u00c2\u00a3 是 £ 符号。
我想使用 PHP 将它们转换为 £ 或 £。
我正在调查问题并找到以下代码(使用我的磅符号进行测试),但它似乎不起作用:
$title = preg_replace("/\\\\u([a-f0-9]{4})/e", "iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))", '\u00c2\u00a3');
输出是£。
我认为这是 UTF-16 编码是否正确?我如何将这些转换为 HTML 输出?
更新
API 中的 JSON 字符串似乎有 2 或 3 个未转义的 Unicode 字符串,例如:
That\u00e2\u0080\u0099s (right single quotation)
\u00c2\u00a (pound symbol)
【问题讨论】:
-
这听起来像是 API 的另一端的编码被破坏了。如果您采用 UTF-8 编码数据并将其读取为 ISO-8859-1,通常会得到
£。我猜在结果字符串被 JSON 编码之前,这发生在 API 提供者系统的某个地方。有点乱,真的。第一个呼叫端口应该是通知 API 提供者并要求他们修复它。 -
感谢 SDC。我给他们发了一封电子邮件来说明这一点。希望它会尽快更新,但也许这是一厢情愿的想法!
标签: php unicode encoding utf-8 character-encoding