在xml中处理不同的字符集

时间:2012-03-21 07:04:29

标签: php mysql xml character-encoding

我使用PHP从mysql数据库生成XML以获取名称列表。现在有些标签不合适,例如(( دار الخير )) هي مؤسسة خيرية في الاحساء .. تستق�出现在xml数据中,这会为xml-parsher创建问题,然后我将输出更改为utf8编码,其变为🌴🌴(( دار الخير )) 🌴🌴 هي مؤسسة خيرية ÙÙŠ الاحساء .. تستقØ

我试过

header ("content-type: text/xml; charset=utf-8");

以及

mysql_query('SET character_set_results=utf8');

但没有人能为我提供准确的结果集。我试图改变编码,但它不起作用。有什么方法可以得到正确的文字吗?

1 个答案:

答案 0 :(得分:0)

根据评论更改了答案

好像你已经在UTF8中有某些的数据了,这个utf8数据以二进制形式存储在mysql latin1字段中。

证明:

select convert(binary convert ('دار الخير' using utf8) using latin1) 
,(convert (binary convert('دار الخير' using latin1)using utf8))

如果你的数据只有utf8那么:

mysql_query('SET names latin1'); // this is probably arlready the default

你只需要将xml标头设置为utf8:

<?xml version="1.0" encoding="UTF-8" ?>

另外,我不确定是否需要php标头:

header ("content-type: text/xml; charset=utf-8");

在您的情况下我不确定您是否将utf8字符集与其他字符集混合但我的xml编辑器处理该文本正常(即没有出错)它被视为utf8。

如果你有混合的charsets,那么它的痛苦就是屁股。

欢呼声。