我有一个以前将html编码类型设置为ISO-8859-1的系统,它导致所有中文字符以"&\#36830;&\#34915;&\#35033;"
的格式存储。
所以我的问题是,如何在UTF-8
中将上述格式转换回中文字?
为了您的信息,我尝试过使用utf8_decode,iconv,但没有一个能够正常工作。 :(
非常感谢。
答案 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