某些字符导致使用PHP MySQL的web服务iPhone应用程序崩溃;XML


Certain characters causing crash in a web services iPhone app using PHP MySQL & XML

我们有一个实时的web服务iPhone应用程序,其中从MySQL表读取服务器中的内容(类型:MyISAM;排序规则:latin1_swedish_ci)&然后通过PHP通过XML发送。

直到昨天一切都很好,我们需要支持◉性格

在PHP的XML行中,我们更改了

$xml_output = "<?xml version='"1.0'" encoding='"ISO-8859-1'"?>'n";

$xml_output = "<?xml version='"1.0'"?>'n";

瞧,和这个角色一起,这个应用程序开始支持表情符号&国际语言!

但问题是……现在,当内容包含某些特定字符时,应用程序会崩溃,我们无法检测到这些字符。

举个例子:当MySQL字段有这个"时™'字符串,应用程序崩溃。这个例子中奇怪的角色应该是一些表情符号角色。

我相信这是一些与编码相关的问题,但不知道如何正确设置它——从使用PHP&然后通过XML获取。

如何设置整个过程?此外,如果你能为初学者提供一些资源来描述表情符号支持的整个过程,那就太好了。

附言:我读过这个问题;按照建议做了,但还没修好。

我认为您应该首先尝试将DB和表编码更改为"utf8_general_ci"。

然后,您应该在MySQL连接上运行SET NAMES 'utf8'。这一点非常重要,以便所有客户端通信都以unicode进行。

然后在编写XML时,设置<?xml version="1.0" encoding="UTF-8"?>

如果以上都不起作用,我建议您也查看iPhone代码和配置,以确保支持特殊字符。

希望它能有所帮助!

您还应该知道,大多数表情符号字符都是使用4字节UTF8代码点编码的,除非升级到5.5版本并将表转换为utf8mb4字符集,否则无法存储在MySQL中。

参考:如何在mysql中插入utf-8 mb4字符(ios5中的表情符号)?

我猜您的应用程序正在崩溃,因为XML解析器遇到了一个无效字符。无效字符可能是由于您正在进行的编码转换而悄悄出现的。如果您将所有服务器端转换为UTF8,它可能会解决问题,但如果您接受用户输入,则还需要对输入进行消毒,以确保它是有效的UTF8。