首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表情符号导致iphone崩溃

表情符号导致iphone崩溃
EN

Stack Overflow用户
提问于 2009-09-23 14:39:29
回答 2查看 822关注 0票数 0

我们的iphone应用程序有一个聊天室,用户可以在那里发表评论。最近,聊天室的应用程序崩溃了,因为用户在评论中添加了表情符号。我转到我的服务器PHP脚本,不允许不在A-z0-9范围内的字符(我也允许大约30个标点符号字符),希望这可以防止应用程序/提要崩溃。然而,聊天室里仍然充斥着表情符号。

这是我的服务器脚本中的正则表达式过滤器,它不允许使用特殊字符的注释:

代码语言:javascript
复制
$special = "/\W/";
$special2 = "/[\~\!\@\#\$\%\^\&\*\(\)\_\+\`\-\=\{\}\|\:\\\"\<\>\?\,\.\/\;\'\[\]]/";

if ((preg_match($special,$comment)) && (!preg_match($special2,$comment)))

上面的PHP语句表示,如果脚本发现一个字符不是A-z,并且不是所列出的标点符号之一,则拒绝注释。

最近破坏了这款应用的评论如下:

代码语言:javascript
复制
<comment>Exciting times&icirc;€Žits all about the &icirc;Â&sect; go Team!!</comment>

关于如何防止应用程序崩溃有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-09-25 15:01:35

下面是我是如何解决这个问题的。现在,程序在将注释插入数据库之前对其进行解码/编码。

代码语言:javascript
复制
$comment = utf8_decode($comment); 
$comment = utf8_encode($comment); 

我还在动态xml/php提要中添加了一个utf-8头:

代码语言:javascript
复制
header('Content-type: text/html; charset=utf-8'); 

表情符号不显示,这是正常的。但是提要现在是有效的,并且不会使应用程序崩溃。问题解决了。

票数 0
EN

Stack Overflow用户

发布于 2009-09-24 15:14:14

如果要我大胆猜测,我认为是这样的。您的应用程序可能无法正确处理unicode。可能发生的事情有很多种(假设字符数、==字节数等),但是如果你将某些unicode字符串发送到你的应用程序,它就会崩溃。

iPhone Empoji被实现为unicode (使用U+E001-U+E05A的部分私有代码范围)。无法正确过滤它的原因是PHP regexp引擎不会解析使用高unicode范围的传入字符串,除非您将"u“附加到字符串的末尾:

代码语言:javascript
复制
$special2 = "/[\~\!\@\#\$\%\^\&\*\(\)\_\+\`\-\=\{\}\|\:\\\"\<\>\?\,\.\/\;\'\[\]]/u";

这样做可能会有其他意想不到的后果,具体取决于设置的具体方式,从长远来看,确保您可以正确处理任意unicode字符串会更好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1466425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档