2

我有一个系统,之前 html 编码类型设置为 ISO-8859-1,导致所有中文字符都以"&\#36830;&\#34915;&\#35033;".

所以我的问题是,我怎样才能将上面的格式转换成中文单词UTF-8呢?

供您参考,我曾尝试使用 utf8_decode、iconv,但它们都不起作用。:(

非常感谢。

4

3 回答 3

1

该字符串的当前文本编码相当微不足道。你所拥有的是 HTML 实体;它们与 ISO-8859 或 UTF-8 等底层“物理”编码几乎没有关系。您想要的是将这些 HTML 实体解码为特定编码中字符的字节表示,在本例中为 UTF-8。所以:

echo html_entity_decode('连衣裙', ENT_COMPAT, 'UTF-8');
// 连衣裙
于 2013-07-31T07:57:41.607 回答
1

你需要使用:

utf8_encode($data);

而不是解码,将您当前的 ISO-8859-1 转换为 UTF-8。

一些原生 PHP 函数,例如 strtolower()、strtoupper() 和 ucfirst(),在 UTF-8 字符串中并不总是能正常工作。可能的解决方案:首先转换为拉丁语或将以下行添加到您的代码中:

setlocale(LC_CTYPE, 'C');

确保不要使用 BOM(字节顺序标记)UTF-8 文件标记保存您的 PHP 文件(您的浏览器可能会在您网站的 PHP 页面之间显示这些 BOM 字符)。

仅供参考:

ISO-8859-1 => 阿尔巴尼亚语、巴西语、加泰罗尼亚语、丹麦语、荷兰语、英语、芬兰语、法语、德语、葡萄牙语、挪威语、西班牙语、瑞典语

UTF-8 => 中文(简体)、中文(繁体)、日语、波斯语

于 2013-07-31T05:05:12.703 回答
0

有许多工具可以将字符引用转换为字符,编写这样的工具相当简单,特别是如果您知道引用都是十进制的。所以答案真的取决于软件环境。

例如,要对单个 HTML 文档进行此类转换,您可以使用BabelPad编辑器:命令 Convert → Numeric Character References (NCR) → NCR to Unicode,并将结果保存为 UTF-8。

于 2013-07-31T07:48:15.627 回答