Gday All,
尝试使用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数据库表中显示不同的内容?
答案 0 :(得分:3)
尝试在没有BOM的情况下以UTF-8保存所有文件。
使用MySQL进行下一步操作:
SET NAMES UTF-8
SET CHARACTER SET UTF-8
请参阅10.1.5. Configuring the Character Set and Collation for Applications
在根文件夹中创建文件.htaccess,包含下一个内容:
AddDefaultCharset utf-8
AddCharset utf-8 *
<IfModule mod_charset.c>
CharsetSourceEnc utf-8
CharsetDefault utf-8
</IfModule>
答案 1 :(得分:2)
在MySQL中,您不仅需要设置表(或其列)的字符编码,还必须设置PHP和数据库之间连接的字符编码,每次连接时都会这样做。
在PHP中,您可以使用mysql_set_charset()
,或者如果您在数据源名称中使用PDO包含charset=UTF-8
。
这取代了MySQL中的{和PHP推荐它'SET NAMES
。在旧版本的PHP中,每次连接时都使用了MySQL命令SET NAMES UTF8
。