论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_general_ci;

#CHARACTER  SET 指定字符集; COLLATE gbk_chinese_ci:校对规则;

=======================================然后解决===========================================

法1:

确认库、表的字符集一致

#一般这是临时的,重新登录后需重新设置;

注明:DQL.DQL语句之前set names系统及库表的字符集!

2、查看字符集:

show create database basename\G
            *************************** 1. row ***************************
                   Database: basename
            Create Database: CREATE DATABASE `basename` /*!40100 DEFAULT CHARACTER SET latin1 */
        1 row in set (0.00 sec)

##数据库默认的字符集为latin1

3、调整字符集:

set names latin1;

##正常情况下插入中文字符集时先调整;

4、插入语句后检查:select * from test;



法2

导入的时候 指定字符集(set names latin1),后利用source加载文件;

1、把将要跟新的多个sql语句放到文本里;

#此处注意要set names Latin1; >test.sql

2、进入数据后查看:system cat test.sql

3、利用source 将test.sql 导入;(建议全路径)

4、set names latin1;

5、检查:select * from test;

或者:在sql文件中指定字符集 (set names latin1),然后通过mysql命令导入;



法3:

导入的时候--default-character-set=latin1指定字符集

在mysql导入的时候指定字符集

:mysql -uroot -p‘oldboy123‘ --default-character-set=latin1 test < test.sql



4、在配置文件设置客户端及服务端指定字符集,且永久生效;

更改my.cnf客户端模块的参数,可以实现set names latin1;的效果,并且永久生效。

[clinet]

--default-character-set=latin1

提示:无需重启服务,退出重新登录就生效;相当于set names latin1;

更改服务端字符集简单的方法;

更改my.cnf参数

[mysqld]

--default-character-set=latin1 适合5.1 及以前的版本;

character-set-server=latin1 适合5.5



总之:保证linux系统、客户端、服务端、库、表、程序!字符集统一就不会乱码。

系统字符集设定位置: /etc/sysconfig/i18n  ,建议使用LANG=zh_CN.utf8 (中英文环境)

时间: 2024-08-02 11:02:09

论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是要传递的字符串:

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数据库乱码总结

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

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