mysql 显示 乱码_MySQL 中文显示乱码
最近关于中文显示乱码的贴子比较多,所以也做了个总结:
可以参考一下杨涛涛版主的《各种乱码问题汇总》
http://topic.csdn.net/u/20071124/08/3b7eae69-ed1d-4a77-8895-9930bf3601af.html
MySQL字符集的原理介绍。摘录于官方文档。http://dev.mysql.com/doc/refman/5.1/zh/charset.html
不同的编码格式会导致同一字符,在不同字符集下的编码会不同。同样同一编码在不同的字符集中代码的字符也不相同。当你的MySQL返回的字符串的编码格式(字符集)与你的客户工具程序(mysql, php, query browser, ...)当前使用的字符集不同时,就会造成乱码。 比如一个英国朋友告诉你Long, 当一位中国小学生看到后就会告诉你“龙”而不是“长”
关于字符集的详细介绍和例子,建议花一点时间看一下
http://dev.mysql.com/doc/refman/5.1/zh/charset.html (第10章:字符集支持)。
这里仅摘要一下。
MySQL中默认字符集的设置有四级:服务器级,数据库级,表级 。最终是字段级 的字符集设置。注意前三种均为默认设置,并不代码你的字段最终会使用这个字符集设置。所以我们建议要用show create table table ; 或show full fields from tableName; 来检查当前表中字段的字符集设置。
MySQL中关于连接环境的字符集设置有 Client端,connection, results 通过这些参数,MySQL就知道你的客户端工具用的是什么字符集,结果集应该是什么字符集。这样MySQL就会做必要的翻译,一旦这些参数有误,自然会导致字符串在转输过程中的转换错误。基本上99%的乱码由些造成。
乱码后需要检查的信息。(如果需要论坛上的朋友帮助,建议你提供以下信息 )
1. 数据库表中字段的字符集设置 。show create table TableName 或 show full columns from tableName
mysql> show create table t1;
+-------+------------------------------------
| Table | Create Table
+-------+------------------------------------
| t1 | CREATE TABLE `t1` (
`id` int(11) NOT NULL,
`c1` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk |
+-------+------------------------------------
1 row in set (0.00 sec)
mysql> show full columns from t1;
+-------+-------------+----------------+------+-----+-
| Field | Type | Collation | Null | Key |
+-------+-------------+----------------+------+-----+-
| id | int(11) | NULL | NO | PRI |
| c1 | varchar(30) | gbk_chinese_ci | YES | |
+-------+-------------+----------------+------+-----+-
2 rows in set (0.00 sec)
mysql>
2. 当前联接系统参数 show variables like 'char%'
mysql> show variables like 'char%';
+--------------------------+----------------
| Variable_name | Value
+--------------------------+----------------
| character_set_client | gbk
| character_set_connection | gbk
| character_set_database | latin1
| character_set_filesystem | binary
| character_set_results | gbk
| character_set_server | latin1
| character_set_system | utf8
| character_sets_dir | C:\Program File
+--------------------------+----------------
8 rows in set (0.00 sec)
mysql>
1. 中文,请确保 表中该字段的字符集为中文兼容:
big5 | Big5 Traditional Chinese
gb2312 | GB2312 Simplified Chinese
gbk | GBK Simplified Chinese
utf8 | UTF-8 Unicode
2. 确保,联接参数与这个字段字符集一致,你可以用 set name 'charsetname';
比如, set name 'gbk';
这条命令会同时修改 character_set_client,character_set_connection,character_set_results
(如果你的这架MySQL中都为中文,则你可以在my.ini或my.cnf中加上或修改这个参数, 参数文件修改后需重启MySQL服务)
[mysql]
default-character-set=gbk
3. PHP 乱码, 同样 mysql_query("set name 'gbk'"); 其它API也类似。
4. phpmyadmin里乱码
phpMyAdmin的config.inc.php中有没有设置$cfg['DefaultCharset']='utf-8';
5. Windows操作系统中命令行("DOS"窗口)下。
在你的DOS窗中的左上角标题栏片左键,属性,
在字体中,选择“宋体”,确认
mysql中 set names 'gbk';
6. ADO.NET, ADO中 ,可以连接字符串中加入CharSet=UTF8;类似指令以说明connection的字符集。
Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; CharSet=UTF8;
7. SQL Manager for MySQL
用EMS建数据库,
Character Set设为utf-8
client charset设UTF-8
Font charset 设为GB2312_CHARSET
8. jdbcodbc桥接 http://java.sun.com/j2se/1.4.2/docs/guide/jdbc/bridge.html
// Load the JDBC-ODBC bridge driver
Class.forName(sun.jdbc.odbc.JdbcOdbcDriver) ;
// setup the properties
java.util.Properties prop = new java.util.Properties();
prop.put( " charSet " , " Big5 " );
prop.put( " user " , username);
prop.put( " password " , password);
// Connect to the database
con = DriverManager.getConnection(url, prop);
9. PHP 5.2 版本以上解决乱码问题的一个方法 (由 ljf_ljf [Mark Liang] 提供)
$conn = mysql_connect ( " 192.168.1.133 " , " root " , " 123456 " ) or
die ( " Could not connect: " . mysql_error ());
$program_char = " utf8 " ;
$conn . mysql_select_db ( " test " );
// $conn.mysql_query('SET @@character_set_results = "'.$program_char.'"');
mysql_set_charset( $program_char , $conn );
$charset = mysql_client_encoding ( $conn );
printf ( " current character set is %s
" , $charset );
$result = mysql_query ( " SELECT id, task_no,pack_path FROM tb_workplan where id = 1 " , $conn );
while ( $row = mysql_fetch_array ( $result , MYSQL_BOTH)) {
printf ( " ID: %s
task_no: %s
pack_path :%s
" , $row [ " id " ] , $row [ 1 ] , $row [ " pack_path " ]);
}
$conn . mysql_free_result ( $result );
$conn . mysql_close ();
9. 存储过程参数乱码
create procedure t ( aa char(10) charset 'gbk')
小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!
免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!
mysql 显示 乱码_MySQL 中文显示乱码相关推荐
- mysql表中的中文是乱码_mysql插入表中的中文显示为乱码或问号的解决方法
版权声明:本文为博主原创文章,未经博主允许不得转载. 今天在做ssh的博客项目时发现mysql数据库中的中文显示为问号,网上查阅了很多资料,都不是很全,所以我总结一下,供大家参考和自己复习. 1.我的 ...
- mysql 支持中文的字符集_MySQL 中文显示乱码
最近关于中文显示乱码的贴子比较多,所以也做了个总结: 不同的编码格式会导致同一字符,在不同字符集下的编码会不同.同样同一编码在不同的字符集中代码的字符也不相同.当你的MySQL返回的字符串的编 码格式 ...
- mysql导出excel出乱码_Mysql中文乱码以及导出为sql语句和Excel问题解决方法[图文]...
一.导出数据. 先说明一下自己的环境:Mac OS X 10.8.3, MySQL Community Server 5.6.10, MySQL Workbench 5.2.47. 我想把本机数据库内 ...
- srt乱码字幕中文显示解决办法
相信有很多朋友都非常喜欢下载和收藏DVDRip影片,DVDRip一般都是外挂字幕的,外挂字幕的文件类型有很多,比如idx+sub.sub.ass.ssa.srt等等.其中idx+sub由一个idx文件 ...
- jsoncpp中文乱码,中文显示为\u问题处理;jsoncpp中文乱码解决;源码方式使用jsoncpp;UTF_8和ASSIC相互转换;
一.jsoncpp中文写入为\u****问题处理:jsoncpp中文乱码解决: 当我们使用jsoncpp读取写入json文件时,会发现明明是中文字符串,但是赋值给Json::Value后却变成\u** ...
- debian mysql中文乱码_MySQL中文乱码的解决方法汇总
当我们用PHP往MySQL数据库里插入中文时,一旦出现????乱码,很多同学就抓狂了,身为中国人,你却把中文汉字变成乱码,那我可不答应,于是乎我们就开始奔波于个大论坛发帖求助.... 对于MySQL中 ...
- mysql 中日韩 乱码_mysql字符集及乱码问题
MySQL中涉及的几个字符集 character-set-server/default-character-set:服务器字符集,默认情况下所采用的. character-set-database:当 ...
- java中文乱码decode_JAVA中文字符乱码解决详解
四.JSP读取request.getParameter里的中文参数后,在页面显示为乱码.在JAVA的WEB应用中,对request对象里的parameters的中文处理一直是常见也最难搞的一只大怪兽. ...
- 处理中文乱码和中文部分乱码
文章转自:http://book.51cto.com/art/201112/306309.htm 在网络操作中,关于中文乱码很多初学者都感到非常困难,如何解决乱码?不要没有目的胡乱转码,笔者访问了几个 ...
- git linux 文件名乱码,git 中文文件名乱码
git 中文文件名 乱码 mac git 默认中文文件名是 \xxx\xxx 等八进制形式 是因为 对0x80以上的字符进行quote 只需要 git config –global core.quot ...
最新文章
- 【游记】NOIP 2017
- 计算机学习 -快捷键
- JavaSE各阶段练习题----IO流
- pytorch 实现RBF网络
- jQuery的回调支持
- 广州博森科技有限公司外汇自动交易软件,免费下载试用
- 监督学习之分类学习:线性分类器
- 降噪和变声的几个常用软件简单整理
- Linux下cuda卸载
- 关于SqlServer练习题
- uni-app 杂记
- Kali Linux 渗透测试之被动信息收集(三)——Recon-NG框架
- 2022年秋招 Java后端程序员如何应对面试?
- 信捷原创程序,8个伺服轴。 PLC:信捷XDM-60T10 HMI:信捷TG765 总体I/O在200个点之内
- Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day14】—— 数据库3
- php如何调用163邮箱发邮件,phpmailer使用163邮箱发送邮件例子
- 钱宝网可靠吗? 不信可以先试用后在说
- 后台开发面试问题整理
- 温度传感器室温监控仪
- java哪个爬虫框架好用_8个最高效的Python爬虫框架,你用过几个?