【MySql数据库常见字符集介绍】

  在互联网环境中,使用MySql时常用的字符集有:

【如何选择合适的字符集】

  1.如果处理各种各样的文字,发布到不同语言的国家地区,应选Unicode字符集,对MySQL来说就是UTF-8(每个汉字3字节),如果应用需要处理英文,仅少量汉字使用UTF8更好(中英文混合)

  2.如果只需要支持中文,并且数据量很大,性能要求也较高,可选择GBK(定长:每个汉字占双字节,英文也占双字节),如果需要大量运算,如:比较排序,定长字符集,更快,性能更高。

  3.处理移动互联网业务,可能需要utf8mb4字符集。

【查看当前MySQL系统支持的字符集】

使用“ show character set; ”来查看:

查看当前MySQL的字符集设置情况

使用" show variables like 'character_set%' "

| Variable_name                  |      Value    |

| character_set_client             |      utf8      |----------客户端字符集

| character_set_connection      |      utf8      |----------连接字符集

| character_set_database        |      utf8      |----------数据库字符集,配置文件指定或建库建表指定

| character_set_filesystem      |     binary    |----------

| character_set_results           |       utf8     |----------返回结果字符集

| character_set_server           |     latin1     |---------服务器字符集,配置文件指定或建库建表指定

| character_set_system          |     utf8        |

【使用"set names ****"解决乱码问题】

我们先在MySQL默认创建的test数据库中建立一个"user"表

然后我们来为user表添加一些数据:

会发现,插入英文都正常,但是一旦插入中文会出现“ Incorrect string value:"\xD5\xC5\xC8\xFD" for column 'name' at row 1 ”的错误。

我们先查看一下其数据库test的字符编码,默认是Latin1编码的

再查看一下表user的字符编码:同样是latin编码

对应于数据库和表均为latin1编码的情况,如何可以插入中文数据呢?如下:

使用"set names latin1;"设置编码,然后插入中文字段即可。

接下来查询一下,关闭cmd,重新打开一个cmd重新登录,进行查询操作。

发现查询出来又是乱码,我们再处理一下,

于是可以得出,要根据被查询的数据库和表的本身的字符编码来进行对应的" set names  **** "进行处理。

再来看看"set names ****"的具体作用:

先看下数据库test的默认情况下的字符集设置情况:

使用“set names utf8;” 再看下结果:

03_MySQL中文乱码处理_01_MySQl数据库字符集知识的更多相关文章

  1. 03_MySQL中文乱码处理_02_确保MySQL插入数据不乱码的解决方法

    [要统一MySQL数据库客户端 和 服务端的字符集] 如下,就是不统一的情况: 通常,MySQL数据库的下面几个字符集(客户端 和 服务端)统一成一个字符集(即" show variable ...

  2. php mysql 中文乱码解决,数据库显示正常,php调用不正常

    一般来说,乱码的出现有2种原因,首先是由于编码(charset)设置错误,导致浏览器以错误的编码来解析,从而出现了满屏乱七八糟的“天书”,其次是文件被以错误的编码打开,然后保存,比如一个文本文件原先是 ...

  3. 解决JSP页面中文乱码插入到数据库的问题

    在JSP页面使用表单注册一个用户名的时候,查看到数据库里面的表中文显示乱码的情况有两种: 1.JSP页面传进来的参数中文就是乱码,则是前台的问题,这个时候写一个过滤器就好了,可以写如下的一个过滤器 p ...

  4. linux修改配置文件解决mysql中文乱码和指定数据库存储引擎

    如题,mysql数据库的中文显示乱码: 先看下原来数据库里的字符编码: mysql> show variables like '%character_set%'; +-------------- ...

  5. SpringMVC + mybatis + Druid insert 数据库中文乱码,查询无乱码

    之前一直在pom文件配置的数据库连接url,很多配置都写在pom文件中导致配置文件太长 新项目将配置写到不同的文件夹中得properties文件中了 db.url直接复制的pom文件中的 p.p1 { ...

  6. 解决Linux下Oracle中文乱码的一些心得体会 ,转自

    以下转自 http://blog.itpub.net/29151695/viewspace-1173238/ 最近在linux上安装完oracle 10gR2后,又遇到了字符集乱码的问题,之前在网上找 ...

  7. mysql 中文乱码

  8. PHP彻底解决mysql中文乱码

    彻底解决mysql中文乱码 mysql是我们项目中非经常常使用的数据型数据库. 可是由于我们须要在数据库保存中文字符,所以经常遇到数据库乱码情况.以下就来介绍一下怎样彻底解决数据库中文乱码情况. 数据 ...

  9. MySQL 5.5版本解决中文乱码问题时my.ini内[mysqld]项中不能再写default-character-set=utf8

    来看看如何解决乱码问题: 在mysql中默认字符集是latin1, 想要设置字符集为uft-8,可以在 my.cnf 文件中添加以下设置: [client] default-character-set ...

随机推荐

  1. JS实现的一个验证码,可以在前端验证后在提交action

    js实现的一个验证码功能,可以在前端判断验证码输入是否正确 输入的邮箱格式是否正确 验证成功后才提交action到后台 <!DOCTYPE html PUBLIC "-//W3C//D ...

  2. POJ1155 - TELE(树形DP)

    题目大意 电视台要直播一场比赛,电视网络刚好形成了一棵树,其中有M个为客户端,其他的为中转站,其中中转站与中转站以及中转站与客户端之间连接都需要一定费用,每个客户i愿意支付pay[i]元钱,问电视台在 ...

  3. Miller-Rabin素性测试(POJ3641)

    一.概念引入 在以往判断一个数n是不是素数时,我们都是采用i从2到sqrt(n)能否整除n.如果能整除,则n是合数;否则是素数.但是该算法的时间复杂度为O(sqrt(n)),当n较大时,时间性能很差, ...

  4. Redis以及Redis的php扩展安装无错版

    安装Redis 下载最新的 官网:http://redis.io/  或者  http://code.google.com/p/redis/downloads/list 第一步:下载安装编译 #wge ...

  5. Fastjson反序列化泛型类型时候的一个问题

    import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.u ...

  6. IOS tableView 自定义cell 多行时 文字重复现象

    今天写了一个demo,有一个问题,有很多cell,但是超过一页后往下翻,发现文字有重叠现象, cell用的是重用机制,按说不会这样,最终解决的方案: 勾选这个,clears graphics cont ...

  7. C# 算速表达式

              public object ComputeExpression(string expression)         {             var result = new  ...

  8. java 5 线程池

    import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Thr ...

  9. Sqlserver到处数据到Excel

    转:http://www.cnblogs.com/litianfei/archive/2007/08/10/850823.html ) drop procedure [dbo].[p_exporttb ...

  10. Mac OS X 10.7下找不到~/Library/Application Support的解决方案

    28二 最近有台机器升级到了Mac OS X 10.7,Finder的sidebar变了不说,连用户目录下的Library目录也不见了.但是Terminal中是有的,估计是被隐藏了.直接在Finder ...