我使用PHP从mysql数据库生成XML以获取名称列表。现在有些标签不合适,例如(( دار الخير )) هي مؤسسة خيرية في الاحساء .. تستق�
出现在xml数据中,这会为xml-parsher创建问题,然后我将输出更改为utf8编码,其变为🌴🌴(( دار الخير )) 🌴🌴 هي مؤسسة خيرية ÙÙŠ الاØساء .. تستقØ
。
我试过
header ("content-type: text/xml; charset=utf-8");
以及
mysql_query('SET character_set_results=utf8');
但没有人能为我提供准确的结果集。我试图改变编码,但它不起作用。有什么方法可以得到正确的文字吗?
答案 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,那么它的痛苦就是屁股。欢呼声。