不乱码的思想

liunx字符集→linux客户端字符集(例如:ssh)→mysql客户端字符集→mysql服务端字符集→库的字符集→表的字符集→程序字符集统一

mysql表跟库,库跟服务端字符集

linux字符集设定

vim /etc/sysconfig/i18n    #设定linux的字符集为utf-8
LANG="zh_CN.UTF-8" . /etc/sysconfig/i18n       #全局生效

  echo $LANG
  zh_CN.UTF-8

mysql字符集设定

show variables like 'character_set%';    #查看mysql字符集

①character_ set. client |utf8       #客户端字符集,set names utf8
②character_ set_ .connection| utf8      #连接字符集,set names utf8 
③character_ set_ database|utf8     #数据库字符集,配置文件指定或建库建表指定。
④character. set. resplts Iutf8       #返回结果字符集,set names utf8 ;
⑤character_ set. server | lutf8       #服务器字符集,配置文件指定或建库建表指定。
其中,①②④3个参数默认情况采用linux系统字符集设置,人工登录数据库执行“setnames latin1”以及mysql指定字符集登录操作,都是改变了mysql客户端的client、
connection、results 3个参数的字符集为latin1,从而解决了插入中文乱码的问题,这个操作也可以通过更改my .cnf配置文件客户端模块的参数来实现,并且永久生效。。

mysql客户端字符集

改变character-set-client的字符集  (mysql客户端字符集)

vim my.cnf
default-character-set=utf-8      #将这条命令加入到client标签内  无需重启myslq 退出登录既生效

客户端临时生效的命令 进入mysql

set names utf8;      #此命令是临时改变character_ set. client(客户端字符集)  character_ set_ .connection(连接字符集)  character. set. resplts(返回结果字符集)的字符集

mysql服务端字符集

vim my.cnf
default-character-set=utf8       #5.1版本以前的mysql使用      加入在mysqld标签内
character-set-server=utf8        #5.5版本的mysql

mysql表库字符集  

建库表时,不指定字符集 默认库跟mysql 字符集  表跟库的字符集

在创建数据库时设定

create database 库名 character set 'utf8' collate 'utf8_general_ci';     指定库字符集为utf8

在创建表时设定字符集 

create table 表名(表格式) default charset=utf8;          指定表字符集为utf8

对于已有的数据修改字符集

对于已有的数据库想修改字符集不能直接通过“ alter database characterset*”。或"alter table tablename characterset *,这两个命令都没有更新已有记录的字符集,而只是对新创建的表或者记录生效。。已经有记录的字符的调整,必须先将数据导出,经过修改字符集后重新导入后才可完成。。修改数据库库默认编码:

1导出表结构

mysqldump -uroot -p -default-character-set =latin1 -d dbname >alltable.sql--default-character-set =utf8表示以GBK字符集进行连接  -d只导表结构。

2.把表结构改为utf8

alltable.sql 将latin1改成utf8

3.确保数据不再更新的情况下导出所有数据

mysqldump  -uroot p --quick --no-create-info --extended-insert --default-character-set=latin1 dbname >alldata.sql

--quick :用于转储大的表,强制mysqldump从服务器一次一行的检索数据而不是检索所有 行,并输出前CACHE到内存中。

--no-create-info :不创建CREATE TABLE语句

--extended-insert :使用包括几个VALUES列表的多行INSERT语法,这样文件更小,IO也小,导入数据时会非常快

--default-character-set =latin1 #按照原有字符集导出数据,这样导出的文件中,所有中文都是可见的,不会保存成乱码。

4.在alldata.sql数据文件里吧set names latin 1修改为set names utf8

5.建库

create database 库名 character set 'utf8' collate 'utf8_general_ci'; 

6.把表导回去

mysql -uroot -p'密码' <alltable.sql

7.把数据导回去

mysql -uroot -p'密码' <alldata.sql

mysq乱码问题的更多相关文章

  1. java web 学习十(HttpServletRequest对象1)

    一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...

  2. MySQL如何永久解决由dos编码格式导致MySQ的显示乱码

    MySQL如何永久解决由dos编码格式导致MySQ的显示乱码 Ⅰ.新建文件 changeCode.txt Ⅱ.粘贴下面代码(作用:将默认的GBK(936)修改为UTF-8(65001)) Window ...

  3. mysq查询语句包含中文以及中文乱码,字符集 GBK、GB2312、UTF8的区别

    一.查看mysql 字符集设置情况 使用Navicat for Mysql查看工具,打开命令列界面,输入show variables like '%char%';如下图,查看当前mysql字符集设置情 ...

  4. docker上启动mysql镜像,mysq中记录乱码解决方法

    在docker上启动一个mysql, 1. docker pull mysql 2. docker run --name mysql_dev -p 3306:3306 -e MYSQL_ROOT_PA ...

  5. 解决mysql中文乱码(总)

    转自:http://hi.baidu.com/cnvienna/blog/item/2e99efdfd94fc61862279801.html MySQL会出现中文乱码的原因不外乎下列几点: .ser ...

  6. centos6.7下安装mysql5.6.22同时解决中文乱码问题

    1.下载 http://dev.mysql.com/downloads/mysql/ 或者使用wget下载: wget http://dev.mysql.com/get/Downloads/MySQL ...

  7. 解决乱码的方法是,在执行SQL语句之前,将MySQL以下三个系统参数设置为与服务器字符集character-set-server相同的字符集

    character-set-server/default-character-set:服务器字符集,默认情况下所采用的. character-set-database:数据库字符集. characte ...

  8. MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题 收藏 MySQL中涉及的几个字符集

    MySQL中涉及的几个字符集 character-set-server/default-character-set:服务器字符集,默认情况下所采用的.character-set-database:数据 ...

  9. mysql 乱码问题的捣鼓

    mysql在ubuntu的终端下出现中文乱码的问题: 先学着在不改数据库的情况下对my.cnf配置文件进行修改, 主要的是设置 default-character-set=utf8 但是设置完后数据库 ...

随机推荐

  1. C++ void*解惑

    最近遇到void *的问题无法解决,发现再也无法逃避了(以前都是采取悄悄绕过原则),于是我决定直面它. 在哪遇到了? 线程创建函数pthread_create()的最后一个参数void *arg,嗯? ...

  2. JavaMaven【四、坐标&构件】

    maven的依赖都是使用坐标找到对应的构件来进行的 坐标 即groupId+artifactId+version 上图第一个红框是本项目的坐标 第二个红框是依赖的项目的坐标 构件 坐标对应的jar包 ...

  3. 【转】(深入理解计算机系统) bss段,data段、text段、堆(heap)和栈(stack)

    bss段: bss段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域. bss是英文Block Started by Symbol的简称. bss段属于静态内存分配. ...

  4. 论文笔记:Unsupervised Domain Adaptation by Backpropagation

    14年9月份挂出来的文章,基本思想就是用对抗训练的方法来学习domain invariant的特征表示.方法也很只管,在网络的某一层特征之后接一个判别网络,负责预测特征所属的domain,而后特征提取 ...

  5. 序列化 json pickle shelve configparser

    一 什么是 序列化 在我们存储数据或者 网络传输数据的时候,需要对我们的 对象进行处理,把对象处理成方便我们存储和传输的 数据格式,这个过程叫序列化,不同的序列化,结果也不相同,但是目的是一样的,都是 ...

  6. 数据结构---->数组

    1.什么是数组? 数组是一种线性的数据结构.它同一组连续的内存空间,来存储一组具有相同类型的数据. 简单说明几点: (1).线性表:就是数据排成像一条线一样的结构.每个线性表的数据最多只有前和后两个方 ...

  7. Linux日常之命令awk

    参考:http://www.zsythink.net/archives/tag/awk/ 一. 命令awk简介 1. awk是一种编程语言,用于对文本和数据进行处理的 2. 具有强大的文本格式化能力 ...

  8. 《编译原理》控制流语句 if 和 while 语句的翻译 - 例题解析

    <编译原理>控制流语句 if 和 while 语句的翻译 - 例题解析 将 if 和 while 语句翻译成四元式 注:不同教材会有小差异,使用 _ 或者 - ,如果是 -,请注意区分 - ...

  9. 简单的使用Gson (序列化 和 反序化)

    下载地址:http://mvnrepository.com/artifact/com.google.code.gson/gson/2.8.5 在项目导入jar包后 package com.web; i ...

  10. 让create-react-app支持sass,less

    用create-react-app 创建的项目不支持sass和less,需要手动配置 npm install node-sass sass-loader --save 然后在config/webpac ...