Mysql数据库乱码总结

今天又独到了Mysql乱码问题,过去总是匆匆的解决了就算了。这次我实在受不了了。每次都是迷迷糊糊的改好的。
这次决定好好探索一把,看了很多资料及博客之后才理解了点。先记录下来。如有不对的请指正。
1. 首先Mysql是在4.0之后才支持多字符集的。所以只有4.0之后才会出现这种问题。编码转换的规则就是,
在输入数据时将编码由“客户端编码”转换为“服务器端编码”,输出时将数据由“服务器端编码”转换为“客户端编码”。
 MySQL的字符集处理是这样的:
1、发送请求。  1)客户端发送请求到服务器端。       2)服务器端会把请求的数据从客户端字符集(character_set_client)转成服务器连接字符集(character_set_connection)。       3)然后服务器会检测存储区域(table,column)的字符集,然后把数据从连接字符集(character_set_connection)转为存储区域(table,column)的字符集,然後再存储或者查询。

 2、返回请求。
       1)服务器将存储区域(table,column)的字符集转换成服务器连接字符集(character_set_connection)。
       2)将服务器连接字符集(character_set_connection)转换成结果字符集(character_set_results),再发送到客户端。

首先我们看下
mysql>status;

我们可以看到四个字符集的设置。
1.改变my.ini文件中的编码可以改变所有的字符集。
2.set names "uf8" 可以改变 Client  conn这两个字符集。
3.建立数据库时的设置编码可以改变DB 这个。
知道了,原理之后我开始解决今天遇到的问题。
1.在其他地方正常显示中文。但是在CMD中不能显示显示乱码。
首先我设置了my.ini将字符集全部设置为utf8。个人感觉utf8是趋向标准的。
然后数据库建立时设置为utf8.可是看到CMD查询出的是乱码。
这是因为CMD.也就是我们熟知的windows下的dos是不支持utf8的。
所以我设置输出到客户端编码方式转换成GBK即可。也就是set names gbk 。ok问题解决。
				
时间: 2024-12-20 01:10:14

Mysql数据库乱码总结的相关文章

mysql 数据库乱码问题

mysql 数据库乱码问题,按如下顺序检查,一步一步排除出错位置. 最好全部编码都使用UTF8编码. 网页页面编码方式使用UTF8: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 然后检查连接MYSQL数据库时设为UTF8: mysql_query("set character set 'UTF8'",$con);mysql_query(&q

MySql数据库乱码解决方法

MySql数据库乱码解决方法 解决乱码问题一个原则:存取系统使用一致的编码规则. 多使用mysql的原生命令行,这样才能做更多的事情. ? 第一步: 确认应用系统需要使用的编码 java的默认编码是跟随系统的,有的说是默认UNICode,在java中可以使用 String defaultCharsetName=Charset.defaultCharset().displayName();显示编码. 第二步: 确认并设置MySql的数据库的编码 1. 显示编码,简单的方法命令是:status; 或

解决mysql数据库乱码问题

MySQL的SQL语言是用于访问数据库的最常用标准化语言.MySQL软件采用了双授权政策,它分为社区版和商业版,由于其体积小.速 度快.总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库.那么对于mysql数据库乱码问题该如何处理呢? 专职优化.域名注册.网站空间.美国虚拟主机.服务器托管.vps主机.服务器租用的中国信息港来为你详细介绍! 备注:如果您是买空间网的客户,您可以直接咨询技术支持为您提供针对特定问题最简单的解决方案 以下内容转自网络: 1.

Hibernate连接MySQL数据库乱码相关问题

1.查看MySQL字符编码 >show variables like 'character%'; #执行编码显示 其中character_set_client,character_set_results,character_set_connection三个运行变量是造成乱码的关键 2.修改MySQL编码格式为UTF8 编辑my.ini,(注意:不是utf-8,也要注意大小写) 找到客户端配置[client] 在下面添加 ### 默认字符集为utf8 default-character-set=u

客户端发送中文消息到服务端Mysql数据库乱码的问题

这些天的实训写了一个班级发布消息到云端的小android应用,其中注册用户信息的时候需要将中文消息上传到云端的mysql数据库中,如果直接传中文字符串过去在数据库中会出现?的乱码,在加了如下代码之后问题得到了解决 其中tag是要传递的字符串:

论mysql数据库乱码

1.问题确认:数据库乱码归集为字符集问题; 查每个字符集的校队规则:show character set; (观察例 utf8  utf8_general_ci ) 创建gbk字符集数据库: create database name_gbk DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; 创建:utf8字符集数据库: create database name_ntf8 CHARACTER SET utf8 COLLATE utf8_genera

hibernate插入中文到mysql数据库乱码

1. 更改mysql数据库字符集 linux下修改/etc/my.cnf windows下修改my.ini [mysqld]#default-character-set = utf8 character_set_server=utf8      #这个是我添加的init_connect='SET NAMES utf8'datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysqlsymbolic-links=0 [mysqld_s

mysql数据库乱码的问题解决

排查原因:打断点,查看到底是在执行存数据库操作之前就已经乱码了,还是存数据库操作后乱码的. 1.前者解决方案: 在web.xml里面加上: <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <async-supported&

MySQL数据库乱码解决办法

mysql> create database wsyht_latin1 default character set latin1;  #创建为拉丁字符 mysql> use wsyht_latin1 mysql> create table t1(id int,age int(3),name char(10)); mysql> insert into t1 values(1,25,'wsyht'),(2,26,'peter'); mysql> mysql> select