MySQL字符限制问题

时间:2010-11-04 20:14:03

标签: mysql

我的MySQL数据库中的一个表中有一个VARCHAR字段。它的最大长度为200个字符。这在英语中工作正常,但是当我输入200个阿拉伯字符(UTF-8)时,只存储110个字符。

知道为什么会这样,以及如何解决它?

3 个答案:

答案 0 :(得分:0)

这可能是由于连接或客户端字符集设置不正确造成的。

问题SHOW VARIABLES LIKE 'character_set%',看看character_set_connectioncharacter_set_client的值是什么。如果它们是latin1,则需要确保更改代码以获取使用UTF-8的新连接。这可以通过在连接时发出SET NAMES 'utf8'来实现。 (您的数据库抽象类可能提供一种更改连接字符集的方法,在这种情况下,您应该这样做。)

如果这确实是问题所在,您可能在表中存储了错误编码的数据,您需要修复这些数据。

答案 1 :(得分:0)

MYSQL制作密钥并查看UTF-8的方式是您的问题。它假定任何UTF-8字符将是3个字节(对于最坏情况的计算),因此将限制您的大小而不真正解释原因。更多信息:

http://www.xaprb.com/blog/2006/04/17/max-key-length-in-mysql/

答案 2 :(得分:0)

非常感谢,我从你的答案中学到了很多东西。但是,我发现导致问题的原因不是MySQL,而是PHP。 PHP的子字符串函数与阿拉伯字符串不能很好地匹配,并且提前将它们删除,所以我只需将其删除。