2014-09-22 64 views
0

我有这样的阿拉伯多字节的文本字符串:MYSQL错误的字符数

فتكات اكبر تجمع عربي للنساء فقط صحبة وإسلاميات واستشارات وطبخ وزواج وميك اب وتخسيس 
وفضفضة وازياء ومحجبات وهوايات ومول وكليسش مال يهم المرأةفتكات اكبر تجمع عربي للنساء فقط 
صحبة وإسلاميات واستشارات وطبخ وزواج وميك اب وتخسيس وفضفضة وازياء ومحجبات وهوايات ومو 

当运行字符串PHP mb_strlen功能,我得到255个字符,这是正确的。

然后我试图将字符串插入一列使用PHP VARCHAR(255)然后我使用PHP再次选择它从数据库以下是输出:

تكات اكبر تجمع عربي للنساء فقط صحبة وإسلاميات واستشارات وطبخ وزواج وميك اب وتخسيس وفضفضة 
وازياء ومحجبات وهوايات ومول وكليسش مال يهم المرأ� 

所以你看,近一半的字符串已被截断。我不知道这与MYSQL或PHP输出有关。

这里是我的数据库规格: MYSQL 5+,ENGINE = InnoDB的,默认的字符集= UTF8,utf8_general_ci

而在PHP我使用PDO语句连接,插入,然后从数据库中选择。

当插入或选择数据库或任何在插入或选择过程中必须使用的PHP函数时,是否需要使用额外查询?

+2

看吧http://stackoverflow.com/questions/279170/utf-8-all-the-way-through – Mihai 2014-09-22 16:39:40

+0

是否文本AP梨正确(即使截断)在数据库中,即当用phpMyAdmin或一些这样的管理工具看?或者它在数据库中显示为垃圾? – deceze 2014-09-22 16:41:29

+1

@Mhaihai做到了!感谢队友;) – 2014-09-22 16:51:25

回答

2

我找到了答案:

只需将以下参数添加到MYSQL PDO连接:

mysql:charset=utf8; 

当然,确保有默认字符集= UTF8,utf8_general_ci数据库 而这个元标签页:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />