首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么PHP/MySQL插入我的中文字符是不同的?

问为什么PHP/MySQL插入我的中文字符是不同的?
EN

Stack Overflow用户
提问于 2010-08-12 12:51:03
回答 2查看 1.8K关注 0票数 3

Gday全部

当我尝试使用mysqlnd从PHP向我的MySQL数据库插入一些中文字符时,我遇到了一个令人费解的问题。

我有一个表格,接受一些细节,如内部名称,外部名称,拍摄名称等。

我在表单的所有三个字段中输入"语言测试“(语言测试)。

我正在使用内部连接提交我的信息,例如:

代码语言:javascript
复制
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数据库表中显示不同?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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。

票数 2
EN

Stack Overflow用户

发布于 2010-08-12 12:59:38

  1. 尝试在没有物料清单的情况下以UTF-8格式保存所有文件。

请参阅带有MySQL的byte order mark (BOM)

  • Do下一步操作:

集合名称UTF-8集合字符集UTF-8

请参阅10.1.5. Configuring the Character Set and Collation for Applications

  • In根文件夹创建文件.htaccess,其中包含下一内容:

AddDefaultCharset utf-8 AddCharset utf-8 * CharsetSourceEnc utf-8 CharsetDefault utf-8

请参阅Setting charset in htaccess

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3464829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档