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


MySQL text data got truncated by some symbol

我有一个Android下的HTML5移动应用程序。用户可以使用标准的<textarea />发送短信,这将通过$.post()函数发送。然后我的PHP脚本序列化消息并使用Zend库将其放入MySQL。我现在所拥有的:1000条消息是ok的,26条消息被截断存储在DB中。所有留言都是俄语。例如:

: 3:{年代:11:"show_telnum";销售:6:"作者";销售:8:"show_gps";销售:3:"所有";销售:7:"消息";销售:39:"Интереснаяштука

: 3:{年代:11:"show_telnum";销售:6:"作者";销售:8:"show_gps";销售:6:"作者";销售:7:"消息";销售:18:"Канечна

: 3:{年代:11:"show_telnum";销售:6:"作者";销售:8:"show_gps";销售:6:"作者";销售:7:"消息";销售:34:"Нубудемзнакомы

所以这是完整的单词,然后是截断的数据。我真的不知道发生了什么,因为所有的俄语文本都处理得很好。在Zend配置数组中,我已经解决了选项'charset' => 'UTF8',有什么建议吗?

这个不应该是一个答案,但是对于一个可读的注释来说它太长了:

就像你提到的,我真的认为问题是一些字符,不能正确编码。MySQL在这里截断,也许你可以找到这是哪个字符。

来自utf-8文档的输入和数据库正在使用utf-8字符集和排序?

您是否尝试过在数据库中显示警告?

您也可以尝试将数组保存为数据库中的BLOB,这样可能会少一些问题。

var_dump()序列化的字符串,看看它是否正确。

你可以尝试的是base64_encode/base_64_decode只是为了测试。

// serialize
$stringToStore = base64_encode( serialize( $your_string ) );
//to unserialize...
$arrayFromStringStoredInDB = unserialize( base64_decode( $your_db_string ) );

好的,这里是完整的答案:如何在mysql中插入utf-8 mb4字符(ios5中的表情符号)?此外,在Zend中,我必须修改配置'charset' => 'utf8mb4',现在一切都很好。

注:只是一个微笑就可以杀死utf8行的部分数据!!什么鬼东西??