欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

请教php+mysql中文字符乱码问题,麻烦大家给提提建议

程序员文章站 2024-02-16 11:28:46
...
网站用php+mysql做的,租用的服务器是linux的,我的页面用的gb2312的字符编码,创建数据表时用了"set names gb2312",客户自己提交的中文有的字符显示不出来,有的乱码。


想知道我应该怎么设置?(我网站的客户都是国内的,就想能正常添加和显示中文)

回复讨论(解决方案)

mysql中字段和数据库表的编码设置的是什么?

注意 gb2312 和 gbk 的区别
gb2312 是 gbk 的子集,非常用字都不在其中
目前的浏览器和编辑器都不区分两者,只认前面的 GB
但 MySQL 是严格区分的,不在 gb2312 中的 gbk 字符都将不能正确处理

所以可能含有中文的字段都应设置连接校对为 gbk_chinese_ci 或 utf8_general_ci
并在连接数据库后,执行 set names gbk 指令

注意:字符集设置的改变,只对其后的数据起作用,不会影响到表中的原有数据。即:原来乱码的,依然是乱码

注意 gb2312 和 gbk 的区别
gb2312 是 gbk 的子集,非常用字都不在其中
目前的浏览器和编辑器都不区分两者,只认前面的 GB
但 MySQL 是严格区分的,不在 gb2312 中的 gbk 字符都将不能正确处理

所以可能含有中文的字段都应设置连接校对为 gbk_chinese_ci 或 utf8_general_ci
并在连接数据库后,执行 set names gbk 指令

注意:字符集设置的改变,只对其后的数据起作用,不会影响到表中的原有数据。即:原来乱码的,依然是乱码

学习。。。。。

还是不确定我到底该怎么设置。

服务器租用的虚拟主机,LINUX的。网站客户是国内的。我理解的是又两种选择,意识统一成UTF8的,再就是统一成GBK的,是这样吧?

如果想用UTF8,我具体该怎么设置?页面设计我用的DREAMWEAVERCS5,默认正好是utf-8,创建MYSQL表是用了set names utf8,还需要做什么?