将中文字符从ISO-8859-1转换为UTF-8

时间:2013-07-31 03:37:17

标签: php html utf-8 character-encoding iso-8859-1

我有一个以前将html编码类型设置为ISO-8859-1的系统,它导致所有中文字符以"&\#36830;&\#34915;&\#35033;"的格式存储。

所以我的问题是,如何在UTF-8中将上述格式转换回中文字?

为了您的信息,我尝试过使用utf8_decode,iconv,但没有一个能够正常工作。 :(

非常感谢。

3 个答案:

答案 0 :(得分: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 =>中文(简体),中文(繁体),日文,波斯文

答案 1 :(得分:1)

该字符串的当前文本编码非常不实用。你有什么HTML实体;它们与ISO-8859或UTF-8等基础“物理”编码关系不大。你想要的是将这些HTML实体解码为特定编码中字符的字节表示,在本例中为UTF-8。因此:

echo html_entity_decode('连衣裙', ENT_COMPAT, 'UTF-8');
// 连衣裙

答案 2 :(得分:0)

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

例如,要对单个HTML文档执行此类转换,可以使用BabelPad编辑器:命令转换→数字字符引用(NCR)→NCR到Unicode,并将结果保存为UTF-8