一:mysql字符集
mysql的字符集支持(Character Set Support)有两个类型:字符集(Character set)和连接校对(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。mysql对于字符集的指定可以细化到一个数据库,一张表,一列。一般的程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配置
(1)编译mysql时,默认的字符集是 latin1;
(2)安装mysql时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定这个值采用默认的;
(3)启动mysql时,可以在命令行参数中指定默认的的字符集,如果没指定则继承自配置文件中的配置,此时 character_set_server 被设定为这个默认的字符集;
(4)当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为character_set_server;
(5)当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集;
(6)在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个数据库默认的字符集;
(7)当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;
如果什么地方都不修改,那么所有的数据库的所有表的所有栏位的都用 latin1 存储。

所以mysql的默认编码是Latin1,不支持中文,要支持中文需要把数据库的默认编码修改为gbk或者utf8。

二:mysql乱码原因:

       由以上可知:
1.server本身设置,例如编码还在使用latin1
2.数据表和字段的编码设定问题(包含character与collation)
3.客户端程式(例如php)的连线语系设定问题
  注意:GBK与GB2312的区别就在于:GBK能比GB2312显示更多的字符,要显示简体码的繁体字,就只能用GBK。
三:编码查询
    查看数据库的编码方式命令为:

 mysql>show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+、
mysql> show variables like 'collation%';(或者使用 >show variables like 'collation%';)
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-----------------------+
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-----------------------+

四:编码方式的修改

   其中:   character_set_client          为客户端编码方式;

              character_set_connection   为建立连接使用的编码;
              character_set_database      数据库的编码;
              character_set_results         结果集的编码;

              character_set_server          数据库服务器的编码;
   外部访问数据乱码的问题就出在这个connection连接层上,解决方法是在发送查询前执行一下下面这句:

SET names utf8

   相当于: SET character_set_client          ='utf8';
              SET character_set_connection  ='utf8';

              SET character_set_results        ='utf8';

修改后可以解决大部分的编码问题。
   还有一种最简单的修改方法,就是修改mysql的my.ini(linux系统为my.cnf)文件中的字符集键值, 
          在[client]下面加上
          default-character-set = utf8
          在[mysqld]下面加上
          character_set_server =   utf8
          default-character-set = utf8
          character-set-server = utf8
          collation-server = latin1_swedish_ci
          init_connect = 'SET collation_connection = utf8_general_ci'
          init_connect = 'SET NAMES utf8'      
   修改完后,重启mysql的服务,service mysql restart

五:避免创建数据库及表出现中文乱码和查看编码方法
   1、创建数据库的时候:

 CREATE DATABASE `datatest`
CHARACTER SET 'utf8'
COLLATE 'utf8_general_ci';

2、建表的时候

 CREATE TABLE `database_user` (
   `id` varchar(40) NOT NULL default '',
   `name` varchar(40) NOT NULL default '',
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
   如果是已经建立的数据库可以使用以下修改
   1.修改数据库的编码     将数据库(test)的编码方式修改为utf8,如:

 ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; 
   2.修改表的编码    将表(test)的编码方式修改为utf8,如:

  ALTER TABLE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; 
   3.修改字段的编码    将表(test)中字段(name)的编码方式修改为utf8,如:

 ALTER TABLE `test` CHANGE `name` `name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE  utf8_bin NOT NULL; 

mysql编码设置的更多相关文章

  1. mysql编码设置 [http://blog.knowsky.com/254652.htm]

    MYSQL 2009-09-11 15:37 阅读73 评论1 字号: 大大 中中 小小mysql> SHOW VARIABLES LIKE 'character_set_%';+------- ...

  2. mysql 编码设置

    (windows下) 打开C:\Program Files\MySQL\MySQL Server 5.0\my.ini (ubuntu下) 打开 /etc/mysql/my.cnf 在[client] ...

  3. ubuntu mysql编码设置5.5以后

    安装了mysql. 版本:5.5.28 操作系统 :ubuntu 12.10 mysql> show variables like 'character%'; +---------------- ...

  4. MySQL修改编码设置及乱码问题

    源地址:http://blog.csdn.net/millia/article/details/5806774   昨天尝试把自己用php编写的第一个糙站发布到网上..结果出现了因为编码不统一而导致乱 ...

  5. MySQL基础 - 编码设置

    刚开始工作的时候,在工作中遇到的与数据库相关的问题,多半跟编码有关,总结一下数据库编码的设置. 字符集 查看数据库支持的字符集: mysql> SHOW CHARACTER SET; 从图中可以 ...

  6. 以Windows服务方式启动MySQL,并将其默认编码设置为UTF-8

    系统环境:Windows XP Professional 版本 2002 Service Pack 3 // 第1步:创建选项文件.首先下载mysql-5.5.12-win32.zip,只需复制mys ...

  7. mysql utf8编码设置

    1.建立数据库时指定数据库db_test为utf8编码.: create database db_test character set utf8;  修改数据库db_test编码的命令为: alter ...

  8. linux上设置mysql编码

    linux下设置mysql编码 linux下设置mysql编码 首先查找MySql的cnf文件的位置: [root@flyHome gaoxiang]# find / -iname '*.cnf' - ...

  9. mysql的安装、C++訪问mysql数据库、编码设置问题

    一.mysql的安装.这个相对简单,直接去官网下载mysql安装程序.就能够完毕安装过程,网上有非常多安装教程,这个没什么注意事项. 二.C++訪问mysql.主要是用到mysql定义的头文件,内部定 ...

随机推荐

  1. iOS开发——UI基础-UIScrollView

    一.UIScrollView使用的步骤 1.创建UIScrollView 2.将需要展示的内容添加到UIScrollView中 3.设置UIScrollView的滚动范围 (contentSize) ...

  2. jquery 平滑锚

    setTimeout('$("html,body").animate({ scrollTop: $(".title").offset().top }, 1000 ...

  3. 第一款支持容器和云部署的开源数据库Neo4j 3.0

    导读 Neo4j 3.0.0 正式发布,这是 Neo4j 3.0 系列的第一个版本.此版本对内部架构进行了全新的设计:提供给开发者更强大的生产力:提供更广阔的部署选择.Neo4j 3.0 被认为是世界 ...

  4. ruby on rails validates uniqueness

    最近在处理一个小功能,每个元素可以有多个图片,每个图片的name表示了它是背景图还是海报图, 需要对每个元素的图片name做一个唯一性验证,一个元素不能添加两个海报图, 需要使用的是validates ...

  5. cell 和 cellHeight的先后执行顺序

    UITableView 在运行过程中,总是,先生成一个UITableViewCell ,然后一次这个cell的height.

  6. (转)listview中常见难题总结

    原文地址:http://blog.csdn.net/cherry609195946/article/details/8844224 1. PopWindow中listview的item获取不到点击事件 ...

  7. ajax 载入html后不能执行其中的js解决方法

    事件背景 有一个公用页面需要在多个页面调用,其中涉及到部分js已经写在了公用页面中,通过ajax加载该页面后无法执行其中的js. 解决思路 1. 采用附加一个iframe的方法去执行js,为我等代码洁 ...

  8. DICOM医学图像窗口变换的加速算法

    详见:http://pan.baidu.com/s/1gfFLbJ9 DICOM医学图像窗口变换的加速算法* 张尤赛 ,陈福民 ( 同济大学计算中心, 上海 200092 ) (华东船舶工业学院电子与 ...

  9. 将kindeditor在线编辑器制作成smarty插件

    在web开发中,在线编辑器是经常要用到的功能模块,虽说配置在线编辑器没有多大难度,但是每一次编写重复的代码,总是让人感觉不爽. 本篇,就来讲解一下,如何将kindeditor制作成smarty的一个自 ...

  10. Linux nohup 程序后台运行

    &方式: Unix/Linux下一般想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行.比如我们要运行mysql在后台:          /usr/local/my ...