
mysql数据乱码问题可能有以下三种原因: 1server本身设定问题,例如还停留在latin1版本; 2table的语系设定问题(包含character与collation); 3客户端程式(例如php,java)的连线语系设定问题; 建议使用utf8!!!! 想要避免mysql的中文乱码问题,可以
正确检查步骤
1确认你数据库中不是乱码
2连接数据库加上字符编码例如:
jdbc:mysql://localhost:3306/dbnameuseUnicode=true&characterEncoding=utf8
如果这样还是乱码那就是你程序编码问题了,和数据库无关了。
首先,这个问题一般都是字符集不匹配的问题;就是说数据库中存储数据用的字符集,和你连接数据库用的字符集不匹配。
然后,就是看你的数据库了
oracle的话
先确认数据库服务所采用的字符集,select userenv('language') from dual;
然后修改客户端的环境变量,比如set nls_lang=AMERICAN_AMERICAZHS16GBK
mysql的话,一般都是用utf8的字符集
在你客户端连接时,也要保证字符集一致才行
其它类型数据库的话,看具体的解决方案
我在给客户服务中,遇到过乱码问题,在连接字串中加入:charset=gb2312,问题解决。但你用的是JDBC连接,他使用的ODBC连接,应该类似,当时的具体情况是:
用户使用DBSync软件做MySQL的数据同步,MySQL的数据库字符集为utf8mb4,连接字符串采用ODBC 351,在任务设置的step2,列出的中文数据是乱码,在连接字串中加入:charset=gb2312,问题解决。
html解析的时候会自动将空白字符过滤掉,如空格、制表符、换行符、回车符,所以输出时需要进行转移
对数据库中的字段用函数replace(字段名,chr(10),'
');
数据库采用UTF8编码,而页面申明编码是GB2312,这是最常见的产生乱码的原因。这时候在PHP脚本里面直接SELECT数据出来的就是乱码,需要在查询前先使用:mysql_query("SET NAMES GBK");或mysql_query("SET NAMES GB2312");来设定MYSQL连接编码,保证页面申明编码与这里设定的连接编码一致(GBK是GB2312的扩展)。如果页面是UTF-8编码的话,可以用:mysql_query("SET NAMES UTF8"); 注意是UTF8而不是一般用的UTF-8。假如页面申明的编码与数据库内部编码一致可以不设定连接编码。
事实上MYSQL配置文件myini中定义了2个默认编码,分别是[client]里的default-character-set和[mysqld]里的default-character-set来分别设定默认时候客户端连接和数据库内部所采用的编码。上面指定的编码其实是MYSQL客户端连接服务器时候的命令行参数character_set_client,来告诉MYSQL服务器接受到的客户端数据是什么编码的,而不是采用默认编码。
转自:>
以上就是关于为什么在mysql中查询出来的数据是乱码全部的内容,包括:为什么在mysql中查询出来的数据是乱码、怎么处理mysql数据库里提取数据出现的汉字乱码、把数据库中的中文输出出来为什么乱码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)