我有一个系统,之前 html 编码类型设置为 ISO-8859-1,导致所有中文字符都以"&\#36830;&\#34915;&\#35033;"
.
所以我的问题是,我怎样才能将上面的格式转换成中文单词UTF-8
呢?
供您参考,我曾尝试使用 utf8_decode、iconv,但它们都不起作用。:(
非常感谢。
我有一个系统,之前 html 编码类型设置为 ISO-8859-1,导致所有中文字符都以"&\#36830;&\#34915;&\#35033;"
.
所以我的问题是,我怎样才能将上面的格式转换成中文单词UTF-8
呢?
供您参考,我曾尝试使用 utf8_decode、iconv,但它们都不起作用。:(
非常感谢。
该字符串的当前文本编码相当微不足道。你所拥有的是 HTML 实体;它们与 ISO-8859 或 UTF-8 等底层“物理”编码几乎没有关系。您想要的是将这些 HTML 实体解码为特定编码中字符的字节表示,在本例中为 UTF-8。所以:
echo html_entity_decode('连衣裙', ENT_COMPAT, 'UTF-8');
// 连衣裙
你需要使用:
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 => 中文(简体)、中文(繁体)、日语、波斯语
有许多工具可以将字符引用转换为字符,编写这样的工具相当简单,特别是如果您知道引用都是十进制的。所以答案真的取决于软件环境。
例如,要对单个 HTML 文档进行此类转换,您可以使用BabelPad编辑器:命令 Convert → Numeric Character References (NCR) → NCR to Unicode,并将结果保存为 UTF-8。