【发布时间】:2012-03-27 10:53:02
【问题描述】:
我在处理从 XML 文件导入的一些数据时遇到问题。不幸的是,我正在使用一些西班牙字符,通常我只是 htmlentites 他们,但它不起作用。
我要显示的示例:
PRCE PEDUCED FROM 1,395,000€
A delightful south facing villa located in Génova
应该是:
PRCE PEDUCED FROM 1,395,000€
A delightful south facing villa located in Génova (no idea what that should be...)
有什么想法吗?
编辑: 表编码是 utf8_spanish_ci,PHP 目前设置为 ISO-8859-1 作为一项努力。客户端目前是 UTF-8
$text = nl2br($Property->description);
$trans_text = iconv('UTF-8', 'ISO-8859-15//TRANSLIT//IGNORE', $text);
echo $trans_text;
echo htmlentities($trans_text, ENT_QUOTES, 'ISO-8859-15');
【问题讨论】:
-
它将一个所需的字符 € 映射到六个字节上?这听起来像是要经历两次转换,可能是 € -(utf8)> e2 82 ac -(??) -> c3 a2 c3 2c c3 ac。
-
乌尔里希,我希望我明白这一点。我想你是说它被转换了两次,现在是六个字节;不幸的是,这就是它在数据库中的存储方式。我试图弄清楚如何在 HTML 页面上显示它。有什么想法吗?
-
最好的解决办法是纠正你的导入而不是修正你的输出
-
嗯。那么事后没有解决方案吗?由于截止日期和导入所需的时间长度,我强烈不希望修复导入...
-
这可能意味着您在保存文本时和检索文本时都使用 htmlentities() 过滤了文本。如果您通过 htmlentities 运行 €,您将获得该符号的“代码”,并且当您通过 htmlentities 运行该代码时,它将显示类似于您的示例输出的内容
标签: php encoding character-encoding