PHP和XML融合,正确编码特殊字符

PHP和XML融合,正确编码特殊字符,php,xml,regex,Php,Xml,Regex,我有一个输出大量信息的数据库。 我目前正在构建一个PHP应用程序,以将该数据库构建为XML格式,供其他应用程序读取 我有点迷恋特殊角色。 在数据库中,一些字符以奇怪的方式打印: Ø变成Ã °变为° 我使用fwrite()在PHP中编写XML文件,我认为错误就在那里 我需要一种方法来克服这个问题,也许可以通过检测这些字符出现的位置并适当地替换它们 我使用的是PHP,我不确定如何在单个基础上替换这些字符,更重要的是,我不确定用什么替换它们 有人能帮忙吗?Ø变成Ã,变成 看起来UTF-8编码字符被传

我有一个输出大量信息的数据库。 我目前正在构建一个PHP应用程序,以将该数据库构建为XML格式,供其他应用程序读取

我有点迷恋特殊角色。
在数据库中,一些字符以奇怪的方式打印:

Ø变成Ã
°变为°

我使用fwrite()在PHP中编写XML文件,我认为错误就在那里

我需要一种方法来克服这个问题,也许可以通过检测这些字符出现的位置并适当地替换它们

我使用的是PHP,我不确定如何在单个基础上替换这些字符,更重要的是,我不确定用什么替换它们


有人能帮忙吗?

Ø
变成
Ã
变成

看起来UTF-8编码字符被传递到某个显示设备,并告知显示设备这些是ISO-8859-X或Windows-125X编码字符


告诉显示设备这确实是UTF-8(默认情况下是XML的标准编码)。

XML和表使用哪个字符集。XML是一个apple plist文件,所以它使用UTF-8+1,正如Daniel所说,完全正确,字符以某种方式转换为ASCII,而不是UTF-8。那么数据库表呢?他们是否也使用UTF-8目前,字符串在PHP中使用正确的符号-Ø和°。如果我尝试使用utf8_编码,它看起来就像我上面打印的一样。如前所述,它输出到一个apple plist文件,正如它的顶行所示:
并且我还使用
fwrite($fh,utf8_编码($output))以写入文件。我不确定我怎么能强迫UTF-8超过这个。是的,它正在输出这个。但是,显示输出的内容非常确定,它不是UTF-8,而是其他内容。告诉输出设备它是UTF-8。否则,不要期望输出设备足够聪明,能够猜出您想要显示什么以及如何显示。我的数据库中有
,当我从PHP回音时,屏幕上有
fwrite($fh,utf8_encode($output))一起写入文件后,XML中的
以X-code格式显示XML时,最后在我的应用程序上显示
°
,即使我使用
[NSString stringWithUTF8String]
进行转换。我甚至尝试过通过字符串格式说明符
%s
将字符串转换为UTF8字符串,这是排序规则(不是编码),但我假设您的编码是
latin1
。因此,您已将UTF-8数据作为拉丁语-1存储到数据库中。您应该修复数据库中的数据(将字符串视为二进制,并用utf8_对其进行解码,将二进制结果存储回数据库),然后就可以了。为了防止将来出现类似情况,请将编码转换为UTF-8,并将其另存为UTF-8到数据库中,然后以UTF-8模式访问数据库。如果你把它修好了,而且对你的身体(甚至是脆弱的身体)有效,那就走运吧。因为要真正解决这些编码问题,你需要非常直截了当,并且真正知道如果你想安全的话你会做什么。所以祝你好运,终于有些东西对你起了作用;)