php向MySQL插入中文出现乱码

uocool 北京世纪雷讯科技有限公司 软件工程师  2009-08-07 12:30:18
列类型为varchar,通过PHP插入中文时出现乱码。

连接数据库时已经执行了SET NAMES GBK,请问各位大侠,问题出在了什么地方?多谢
...全文
887 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
__小洪__ 2011-08-26
[Quote=引用 8 楼 uocool 的回复:]

问题已经解决 是php文件储存时的编码错误造成的问题 感谢各位 分给你们了
[/Quote]

你能说说你的解决方法吗?我也出现这种问题,但是你说的太抽象,似乎没明白
回复
fenyao 2009-08-07
老问题了,楼主查一下其他相关帖子吧
回复
uocool 2009-08-07
问题已经解决 是php文件储存时的编码错误造成的问题 感谢各位 分给你们了
回复
uocool 2009-08-07
[Quote=引用 6 楼 blueforyou 的回复:]
看下表的字符是gbk的吗?
[/Quote]

表的"整理"属性是"gbk_chinese_ci"
回复
blueforyou 2009-08-07
看下表的字符是gbk的吗?
回复
uocool 2009-08-07
[Quote=引用 4 楼 z9z8z8z 的回复:]
加上mysql_query('SET NAMES utf8');
[/Quote]

问题如故..
回复
z9z8z8z 2009-08-07
加上mysql_query('SET NAMES utf8');
回复
uocool 2009-08-07
回楼上

我的 my.ini 中的default-character-set已经设为gbk,并且在connect mysql后执行了mysql_query('SET NAMES gbk;')

问题如故……
回复
http://topic.csdn.net/t/20051213/11/4456072.html

网页编码是gb2312(如果网页编码是utf-8,php部分可以改成相应的)
【1】命令行,就是Mysql.exe
修改my.ini,
[mysql]
default-character-set=gb2312
(转贴请注明作者)
【2】php->mysql
1 可以修改my.ini的情况下,在[mysqld]添加或修改
init-connect='SET NAMES gb2312'
2 不能修改my.ini
可以在php connect mysql后执行mysql_query('SET NAMES gb2312;');

utf-8编码的文件要比gb2312大,如果网页只有简体中文,只面对国内,没必要转成utf-8
如果网站是多语言,可以考虑utf-8

mysql 4.1版本之后引入多字符编码,我的理解是不论数据库里采用那种编码,只要存入和取出的时候设置的编码相同就不会出现乱码。mysql增加了转码,就是你存入utf-8编码,取出的时候只要告诉mysql你要得到那种编码它就返回正确的结果
如果default-character-set=gb2312 那么就不能存utf8编码的字符,但它的好处是省空间,对数据量大的有用
默认编码是latin1编码,跟gb2312类似,无法插入utf-8编码字符,会提示Data too long for column 'xx' at row
所以网页要采用utf-8编码,数据库也要采用,utf-8编码的网页提交的数据也是utf-8的。
采用latin1或者gb2312,gbk的,只要告诉mysql它你想要的编码就能得到正果
语句就是
SET NAMES xxx;
SET CHARACTER_SET xxx;
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告