我的移动应用程序在Android下运行HTML5。用户可以使用标准<textarea />
发送短信,这将通过$ .post()函数发送。然后我的PHP脚本序列化消息并使用Zend库将其放入MySQL。我现在拥有:1000条消息正常,26条消息被截断在DB中。所有关于俄语的消息。 F.e:
一个:3:{S:11: “show_telnum”; S:6: “作者”,S:8: “show_gps”; S:3: “所有”; S:7: “消息”; S: 39:“Интересная штука
一个:3:{S:11: “show_telnum”; S:6: “作者”,S:8: “show_gps”; S:6: “作者”; S:7: “消息”; S: 18:“Канечна
一个:3:{S:11: “show_telnum”; S:6: “作者”,S:8: “show_gps”; S:6: “作者”; S:7: “消息”; S: 34:“Ну будемзнакомы
所以这是完成的单词,然后数据被截断。我真的不知道什么是goind,因为所有俄罗斯文本处理正确。
在Zend配置数组中,我已经确定了选项'charset' => 'UTF8',
请问有什么建议吗?
答案 0 :(得分:0)
这应该不作为答案,但对于可读的评论来说太长了:
就像你提到的那样,我真的认为问题是某些字符,无法正确编码。 MySQL此时会截断,也许您可以找出这是哪个字符。
来自utf-8文档的输入和数据库是否正在使用utf-8字符集和整理?
您是否在数据库中尝试了SHOW WARNINGS?
您也可以尝试将数组保存为数据库中的BLOB,但问题可能会更少。
var_dump()序列化字符串,看它是否正常。
您可以尝试的是base64_encode / base_64_decode仅用于测试。
// serialize
$stringToStore = base64_encode( serialize( $your_string ) );
//to unserialize...
$arrayFromStringStoredInDB = unserialize( base64_decode( $your_db_string ) );
答案 1 :(得分:0)
好的,这是完整的答案:How to insert utf-8 mb4 character(emoji in ios5) in mysql?
此外,在Zend中我必须修改config 'charset' => 'utf8mb4'
,现在一切都很好。
P.S。只是微笑可以杀掉utf8行中的部分数据!真是太糟糕了???