`

MySql字符编码

 
阅读更多

MySQL4.1及以上版本的字符集支持(CharacterSetSupport)有两个方面:

字符集(CharacterSet)和校对规则(Collation)。

字符集和校对规则有4个级别的默认设置:服务器(server),数据库(database),数据表(table)和连接(connection)。
MySQL中是根据下面几个变量确定服务器端和客户端用的什么字符集:
character_set_client    客户端字符集
character_set_connection  客户端与服务器端连接采用的字符集
character_set_results     SELECT查询返回数据的字符集
character_set_database    数据库采用的字符集
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的默认编码是Latin1,不支持中文,要支持中午需要把数据库的默认编码修改为gbk或者utf8。

1、需要以root用户身份登陆才可以查看数据库编码方式(以root用户身份登陆的命令为:>mysql -u root –p,之后两次输入root用户的密码),查看数据库的编码方式命令为:
>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_%';
 +----------------------+-----------------+
 | Variable_name         | Value            |
 +----------------------+-----------------+
 | collation_connection | utf8_general_ci |
 | collation_database    | utf8_general_ci |
 | collation_server      | utf8_general_ci |
 +----------------------+-----------------+
 修改默认字符集
(1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值,
如 default-character-set = utf8 修改完后,重启mysql的服务。
(2) (2) 还有一种修改字符集的方法,就是使用mysql的命令
mysql> SET character_set_client = utf8 ;
修改完后用命令查看字符集:
>show variables like 'character%';
+--------------------------+----------------------------+
| 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 | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
 可以看到,这几个变量都是一致的。但如果不一致呢?
网上许多教程告诉你“你set names下就解决了”。那么set names是什么呢? set names实际上就是同时设置了character_set_client,character_set_connection,character_set_results这三个系统变量。

例如在mysql命令行上输入 set names 'gbk' 命令等同于:
SET character_set_client = gbk;
SET character_set_connection = gbk;
SET character_set_results = gbk;
 
很多情况下,这样设置了之后就能把乱码问题解决了。但是还是不能完全避免出现乱码的可能,为什么呢?
因为character_set_client,character_set_connection这两个变量仅用于保证与character_set_database编码的一致,而character_set_results则用与保证SELECT返回的结果与程序的编码一致。
例如,你的数据库(character_set_database)用的是utf8的字符集,那么你就要保证character_set_client,character_set_connection也是utf8的字符集。
而你的程序也许采用的并不是utf8,比如你的程序用的是gbk,那么你若把character_set_results也设置为utf8的话就会出现乱码问题。此时你应该把character_set_results设置为gbk。这样就能保证数据库返回的结果与你的程序的编码一致。
总而言之,我们应当尽量的保证数据库中的数据是正确的,就是客户端到服务器端或者服务器端到客户端转换的过程中不要产生乱码,那么问题处理起来就相对简单了。
为便于大家记忆,总结为以下四点:
1、要保证数据库中存的数据与数据库编码一致,即数据编码与character_set_database一致。
2、要保证通讯的字符集与数据库的字符集一致,即character_set_client,character_set_connection与character_set_database一致。
3、要保证SELECT的返回与程序的编码一致,即character_set_results与程序编码一致。
4、要保证程序编码与浏览器编码一致,即程序编码与<meta http-equiv="Content-Type" content="text/html; charset=?" />一致。
MySQL服务器能够支持多种字符集。可以使用SHOW CHARACTER SET语句列出可用的字符集:
mysql> show character set;
 创建数据库时指定编码的两种方式
CREATE DATABASE ms_db CHARACTER SET utf8 COLLATE utf8_general_ci;

create database if not exists netctoss default character set utf8;
 修改数据库的字符集
   
mysql>use mydb
 mysql>alter database mydb character set utf-8;
 
 
分享到:
评论

相关推荐

    教程:修改mysql字符编码成为UTF8.docx

    MySQL 字符编码修改为 UTF8 的教程 MySQL 数据库的字符编码问题一直是开发者们头疼的问题,尤其是在多语言环境下。如果您的 MySQL 数据库的字符编码不是 UTF8,可能会导致数据乱码、无法读取等问题。今天,我们将教...

    Unity3D教程:修改mysql字符编码成为UTF82

    本教程将介绍如何解决Unity3D中与MySQL数据库连接时的字符编码问题,确保数据能够正确地以UTF-8格式存储和读取。 首先,我们遇到的问题是即使设置表的默认字符集为UTF8,并且在发送查询时使用UTF-8编码,仍然会出现...

    MySQL字符编码及乱码解决方案.txt

    MySQL字符编码及乱码解决方案 · 使用多种字符集来存储字符串 · 使用多种校对规则来比较字符串 · 在同一台服务器, 同一个数据库或甚至在同一个表中使用不同字符集或校对规则来混合字符串 · 允许定义任何级别...

    MySQL字符编码设置方法

    MySQL字符编码是数据库管理系统中一个关键的组成部分,它决定了数据存储和检索时的文本格式。在处理多语言或特殊字符时,正确的字符编码设置尤为重要,因为它可以确保数据的一致性和可读性。以下是对MySQL字符编码...

    Honye#notes#MySQL字符编码1

    查看MySQL数据库的编码C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql.exe Ver 14.14 Dis

    Mysql字符集编码详解

    Mysql字符集编码详解 Mysql数据库中的字符集编码问题是许多开发者经常遇到的一个问题,特别是在JAVA项目中。解决这个问题需要从多方面入手,包括服务器、数据库、数据表和连接等四个层次。这篇文章将详细介绍如何...

    微信开发中mysql字符编码问题

    本文将深入探讨如何解决微信开发中的MySQL字符编码问题。 问题的核心在于,当微信开发者通过API获取到包含中文的用户信息,并尝试将这些信息存储到MySQL数据库时,可能会遇到中文字符显示为“??”的乱码情况。这...

    php字符编码确定

    ### PHP与MySQL字符编码的重要性 字符编码是计算机系统识别、存储和处理文本的基础。不同的编码方式支持不同数量和类型的字符,例如ASCII、GB2312、UTF-8等。在PHP开发中,尤其是在处理中文或多种语言内容时,字符...

    MySQL修改默认字符集编码的方法

    查看MySQL字符集的命令是“show variables like ‘%char%’;”。 以MySQL5.6为例,默认的字符集为: 在工作中需要将字符集全部修改为utf8。 以下是修改的方法: 1.打开安装目录,默认在“C:\Program Files\...

    设置mysql字符集

    ### MySQL字符集的基本概念 字符集(Character Set)定义了数据在存储和处理时所采用的编码标准,而校对集(Collation)则规定了字符集下的排序规则和比较方式。在MySQL中,主要涉及以下几个关键变量: - `...

    mysql字符集转换

    ### MySQL字符集转换详解 #### 一、引言 在MySQL数据库管理中,字符集的正确设置至关重要。它直接影响到数据的存储与检索效果,尤其是对于包含多种语言文本的应用场景而言。本文将围绕“MySQL字符集转换”这一主题...

    mysql修改数据库编码(数据库字符集)和表的字符编码的方法

    修改数据库mysql字符编码为UTF8 步骤1:查看当前的字符编码方法 代码如下:mysql&gt; show variables like’character%’; +————————–+—————————-+ |Variable_name |Value | +————————–+...

    MySQL中文编码设置

    #### 二、MySQL字符集介绍 MySQL支持多种字符集,其中最常用的包括ASCII(默认字符集)、Latin1、UTF-8等。UTF-8是一种支持多语言的Unicode编码方式,能够兼容全球大多数语言的文字,非常适合中文环境下的应用。 #...

    mysql字符集设置

    MySQL字符集设置是数据库管理中的一个重要环节,尤其是在处理多语言数据或者有特殊字符需求的应用中。字符集决定了数据库、表以及字段如何存储和显示字符,影响到数据的正确性及兼容性。以下将详细讲解MySQL字符集的...

    SQLyog MysqL汉化界面 可设字符编码

    总之,SQLyog作为一款全面的MysqL管理软件,它的汉化界面和字符编码设置功能对于中国用户来说尤其实用。通过它,用户可以高效、便捷地完成数据库的各种操作,无论是初学者还是专业人士都能从中受益。在日常工作中,...

    MySQL字符编码设置

     修改mysql的编码方式可以有以下几个:  1.通过配置文件修改my.ini(windows下)或/etc/my.cnf(linux下)  分别添加如下内容  [mysqld]  character_server_set=utf8  [mysql]  default-character-set=utf...

    mysql批量修改字符编码

    mysql批量修改字符编码,可以把整个数据库的所有表的charset统一设置为utf-8的。

    linux修改mysql字符集

    我们还需要添加 `init_connect='SET NAMES gbk'`,以设置连接 MySQL 数据库时使用 gbk 编码。 修改完成后,我们需要重新启动 MySQL 服务器,以便新的配置生效。然后,我们可以使用 `show variables like 'character...

Global site tag (gtag.js) - Google Analytics