MySQL文本数据被某些符号截断

时间:2015-09-24 09:37:36

标签: php mysql zend-framework

我的移动应用程序在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', 请问有什么建议吗?

2 个答案:

答案 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行中的部分数据!真是太糟糕了???