+ -
当前位置:首页 → 问答吧 → MYSQL数据库内为UTF8,PHP连接为GBK,这样会引起乱码吗?

MYSQL数据库内为UTF8,PHP连接为GBK,这样会引起乱码吗?

时间:2007-09-18

来源:互联网

MYSQL数据库内为UTF8,PHP连接为GBK(即set names gbk),现在在使用中暂时未发现乱码现象,但是始终感觉不是很踏实。
如果一个字符,在UTF8中有,但是在GBK中无,那么就会出现一个乱码吧?
如果一个字符,在GBK中有,但是在UTF8中无,那么也会出现一个乱码吧?

UTF8中包含有GBK吗?

作者: flash866   发布时间: 2007-09-18

为什么我的mysql建的数据库和表是utf8的,输入数据的表单的页面也是utf8的,并且表单的参数里也加了accept-charset="utf-8",但是到了mysql客户端程序mysqld中(打开的参数中加入了--default-character-set=utf8),查看数据时使用set names 'utf8',然后执行select查看有中文的表,都是乱码,只有用set names 'gbk'才能看到正确的中文,这是怎么回事啊?为什么是gbk不是utf8啊?

作者: zig   发布时间: 2007-09-18

我也一直怀疑这个是 负负得正 原因.
不管是错误的设置还是错误的转换,读写都是同样的条件,结果就正好正确了.
当然了上面的说法是个歪理.
按我的理解数据库其实在执行sql语句的时候一定是遵循一些最基本的规则.
基本到编码无关,当然要保证关键字是ascii编码的了,这也就是只有ascii编码的字段名的原因.
所以说如果你用php代码来保存数据,基本上你set names gbk,和set names utf8结果都正确.
但是在GUI工具里,就不一定了,因为GUI工具都是老外写的.老外没有对显示字符集进行很好的支持造成的显示混乱.
但是为什么存储数据用,set names utf8,GUI工具用set names gbk,就能正常显示呢?
只有一个解释,不管你客户端用什么names,数据库里(字段)的编码都是固定的(utf-8).
数据库(不管是前端还是服务器端)进行了编码转换,所以我认为,直接用utf8编码,
php做b/s的工具其效率要高,因为少了编码转换的步骤.

换句话说,如果前端编码设置和服务器存储端不同,会进行隐式的编码转换,
最终显示是否正确是显示工具解码造成的.数据都是一样的.

我只所以有这样的认识.是因为我以前用过firebird这个数据库.里面有一种叫做none的编码.
也就是你写什么都行,怎么解码服务器不管,服务器只管存取数据就行了.
世界本来就应该这样的.服务器的核心是不应该管编码问题的.都是数据吗!

作者: achun.shx   发布时间: 2007-09-18

要保证phpmyadmin和写出来都不是乱码.才是正解.

还是改造后加上 SET NAMES UTF8吧

:victory:

作者: londit.cn   发布时间: 2007-09-18

不会。。

的。

作者: tg8866   发布时间: 2007-09-18

不一定,最好编码同步,要不然有的时候会有乱码产生,为什么不用统一编码呢?理由说下,看看能不能在统一编码的情况下找一个另外的解决途径

作者: changxilong   发布时间: 2007-09-18

同步?

用的程序乱七八糟的各种编码都有。。

mysql怎么照顾得了???

作者: tg8866   发布时间: 2007-09-19

SET NAMES UTF8

作者: 牙签   发布时间: 2011-06-29

热门下载

更多