环境:mysql 5 + iis + asp.net
字符集:utf 8
问题:通过web页面插入、修改记录后,所有汉字全变成"?",不管是用存储过程,还是sql语句插入、修改,结果都是一样。直接通过管理器(Navicat 8),插入、修改记录是没有问题的,从数据库读出汉字显示在页面,也没有问题。曾一度猜测是iis字符集的问题,分别使用了gb2312和gbk、utf,均不能解决问题。也怀疑程序在中间过程出现乱码,直接使用sql语句 “update tabName set field1='汉字'”依然失败blob字段,图片读写,都搞定了,就这东西搞我2天,还没成
字符集:utf 8
问题:通过web页面插入、修改记录后,所有汉字全变成"?",不管是用存储过程,还是sql语句插入、修改,结果都是一样。直接通过管理器(Navicat 8),插入、修改记录是没有问题的,从数据库读出汉字显示在页面,也没有问题。曾一度猜测是iis字符集的问题,分别使用了gb2312和gbk、utf,均不能解决问题。也怀疑程序在中间过程出现乱码,直接使用sql语句 “update tabName set field1='汉字'”依然失败blob字段,图片读写,都搞定了,就这东西搞我2天,还没成
个人认为是iis与mysql建立连接的时候,字符集就变成了乱码了
如果设置连接的字符集,却找不到地方
有人说 set names 'utf8'可以解决,可我用的是存储过程啊,怎么加的上呢
在存储过程里面加没有用,因为到存储过程里的时候,链接已经建立好了
等等……上面的话,好像是没看清楼主的问题后说的,重新看了一下,这么说吧:
看样子楼主的数据库应该是没有问题的,你说通过Navicat操作,以及取数据显示在页面都没有问题?那么可能是插入数据的时候处理不当?楼主不会是用的直接拼接字符串的方式生成SQL语句的吧?建议用别的方式插入数据。ASP.net我不了解,比如在JAVA的jdbc及Hibernate中可以用带参数(用问号?标示参数)的语句然后另外设置参数值,这样能够解决一些乱码问题。
贴出你的show variables like '%character%';
的结果
在my.ini里加上default-character-set=utf8 即可
但是,依旧有疑问,尽管我的程序跑起来很正常了在my.ini里手动加上这句话,然后在windows服务控制台重启了mysql服务,重启了iis后还是不行用mysql 5的实例配置向导设置默认字符集后,却可以了。我检查过my.ini文件,差别就是default-character-set=utf8 这句话。或许my.ini有其他变化,我没看见吧,但我脑中已经存在疑问了。有人能帮我解答,自然高兴,没人告诉也高兴,因为我已经能存入中文了。
set names 'utf-8';在网面<title>下再加一行
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">