Gday全部
当我尝试使用mysqlnd从PHP向我的MySQL数据库插入一些中文字符时,我遇到了一个令人费解的问题。
我有一个表格,接受一些细节,如内部名称,外部名称,拍摄名称等。
我在表单的所有三个字段中输入"语言测试“(语言测试)。
我正在使用内部连接提交我的信息,例如:
UPDATE table1 INNER JOIN table2(table1.name = "value1", table2.ext_name = "value2", table2.ext_name = "value3")其中有问题的表和字段都设置为utf8_general_ci (我也尝试过utf8_bin)
插入工作正常,但是我看到数据库中插入了两个值。
在表1中我看到了“è¯è¨€æµ<请”,在表2中我看到了"语言测试“。
是什么原因导致我插入的来自相同php表单的完全相同的数据在两个独立的MySQL数据库表中显示不同?
发布于 2010-08-12 13:21:31
在MySQL中,您不仅需要设置表(或其列)的字符编码,还必须设置PHP与数据库之间的连接的字符编码,这在每次连接时都会完成。
在PHP中,你可以使用mysql_set_charset(),或者如果你使用PDO,在你的数据源名称中包含charset=UTF-8。
它取代了MySQL中的SET NAMES ( PHP推荐使用它)。在旧版本的PHP中,每次连接时都使用MySQL命令SET NAMES UTF8。
发布于 2010-08-12 12:59:38
请参阅带有MySQL的byte order mark (BOM)
集合名称UTF-8集合字符集UTF-8
请参阅10.1.5. Configuring the Character Set and Collation for Applications
AddDefaultCharset utf-8 AddCharset utf-8 * CharsetSourceEnc utf-8 CharsetDefault utf-8
https://stackoverflow.com/questions/3464829
复制相似问题