`
snoopy7713
  • 浏览: 1152769 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

修改MySQL字符编码

阅读更多

修改编码其实是为了支持中文~

1. 编译级别。由于缺乏大量自己去编译MySQL的经验,所以对具体的编译优化不太熟悉,可参考简朝阳的《MySQL性能调优与架构设计》。以下内容来自《MySQL 5.1参考手册》2.8.2. 典型配置选项:

  • 默认地,MySQL使用latin1(cp1252)字符集。为了改变 默认设置,使用--with-charset选项:
  • shell> ./configure -- with-charset=CHARSET

警告: 如果你在创建了任何数据库表之后改变字符集,你将必须对每个表运行myisamchk -r -q --set-character-set= charset ,否则索引可能不正确地排序。

2. 启动参数。启动参数可以直接加在启动服务的命令后面,也可以加在配置文件中。如:

(1)mysqld --defaults-file="my-small.ini" --console --character-set-server=utf8 --basedir="C:\mysql-5.5.21-win32" --datadir="C:\mysql-5.5.21-win32\data"

(2)在配置文件的[mysqld]节点中添加:character-set-server = "utf8"

  • --character-set-server=charset

该启动参数在MySQL的各版本中可能有差异,具体参见文档。

注意: default-character-set这个参数已经在新版的MySQL中取消使用,在部分旧版中也已经deprecated而不起作用。 使用配置变量“character_set”(低于4.1.0的服务器版本)和“character_set_server”(4.1.0和更高的服务器版本)指定。

我测试的版本是5.5.21,查看版本号的方式,以下内容来自:查看mysql版本的四种方法

1 select version();
2 status;

3. 查看编码。

1 show variables like '%char%' ;

 

| character_set_client        | gbk
| character_set_connection | gbk
| character_set_database   | utf8
| character_set_filesystem  | binary
| character_set_results       | gbk
| character_set_server       | utf8
| character_set_system      | utf8

得到类似这样的结果,可以使用下面的方法修改编码(该方法仅对当前连接生效,并且不会改变已存储的数据的编码):

1 SET character_set_client = utf8;
2 SET character_set_results = utf8;
3 SET character_set_connection = utf8;

4. 内部编码。指数据库、表、字段的编码。以下内容来自:mysql修改表、字段、库的字符集

修改数据库字符集:

ALTER
 DATABASE
 db_name DEFAULT
 CHARACTER
 SET
 character_name [
COLLATE
 ...
]
;

把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集:

ALTER
 TABLE
 tbl_name CONVERT
 TO
 CHARACTER
 SET
 character_name [
COLLATE
 ...
]
 如:ALTER
 TABLE
 logtest CONVERT
 TO
 CHARACTER
 SET
 utf8 COLLATE
 utf8_general_ci;

只是修改表的默认字符集:

ALTER
 TABLE
 tbl_name DEFAULT
 CHARACTER
 SET
 character_name [
COLLATE
...
]
;
如:ALTER
 TABLE
 logtest DEFAULT
 CHARACTER
 SET
 utf8 COLLATE
 utf8_general_ci;

修改字段的字符集:

ALTER
 TABLE
 tbl_name CHANGE
 c_name c_name CHARACTER
 SET
 character_name [
COLLATE
 ...
]
;
如:ALTER
 TABLE
 logtest CHANGE
 title title VARCHAR
(
100
)
 CHARACTER
 SET
 utf8 COLLATE
 utf8_general_ci;

查看数据库编码:

SHOW
 CREATE
 DATABASE
 db_name;

查看表编码:

SHOW
 CREATE
 TABLE
 tbl_name;

查看字段编码:

SHOW
 FULL
 COLUMNS
 FROM
 tbl_name;

5. 连接方式。对于MySQL Connector/J方式,可以使用如下设置,来自“26.3.3.4. 使用字符集和Unicode”:

在MySQL服务器4.1之前,Connector/J支持每连接单一字符编码,能够从服务器配置自动检测到它,也能由用户通过使用useUnicode characterEncoding 属性配置它。

从MySQL服务器4.1版起,Connector/J支持客户端和服务器之间的单一字符编码,以及针对结果集中从服务器返回至客户端的数据的任意数目字符编码。

具体的连接示例:jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true

 

END. 以下内容来自:MYSQL 字符集问题

 MySQL对于字符集的指定可以细化到一个数据库,一张表,一列,应该用什么字符集。

但是,传统的 程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配置,那么,默认的配置从何而来呢?

    (1)编译MySQL 时,指定了一个默认的字符集,这个字符集是 latin1;
    (2)安装MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;
    (3)启动mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的配置,此时  character_set_server  被设定为这个默认的字符集;
    (4)当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为 character_set_server ;
    (5)当选定了一个数据库时, character_set_database  被设定为这个数据库默认的字符集;
    (6)在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database ,也就是这个数据库默认的字符集;
    (7)当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;

简单的总结一下,如果什么地方都不修改,那么所有的数据库的所有表的所有栏位的都用 latin1 存储,不过我们如果安装 MySQL,一般都会选择多语言支持,也就是说,安装程序会自动在配置文件中把 default_character_set 设置为 UTF-8,这保证了缺省情况下,所有的数据库的所有表的所有栏位的都用 UTF-8 存储。

分享到:
评论

相关推荐

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

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

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

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

    Mysql字符集编码详解

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

    linux修改mysql字符集

    Linux 修改 MySQL 字符集 在 Linux 系统中,MySQL 的字符集默认为 latin1,然而在某些情况下,我们需要修改 MySQL 的字符集以确保某些迁移的程序可以正常显示。在本文中,我们将介绍如何在 Linux 下修改 MySQL 的...

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

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

    MYSQL修改字符集默认问题

    ### 二、修改MySQL字符集的步骤 #### 1. 修改my.ini配置文件 根据给定的部分内容提示,我们需要找到MySQL的配置文件`my.ini`。该文件通常位于安装目录下的`etc`文件夹中。具体步骤如下: - 打开`my.ini`文件。...

    mysql批量修改字符编码

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

    设置mysql字符集

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

    修改MySQL默认字符集编码

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

    MySQL中文编码设置

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

    mysql的编码集修改方式

    #### 修改MySQL字符集步骤 为了确保MySQL服务器的字符集设置为UTF-8,并且在服务器重启后仍然生效,我们需要对MySQL的配置文件`my.cnf`进行编辑。以下为详细的步骤: ### 步骤1:查找并定位`my.cnf`文件 首先,需要...

    mysql字符集设置

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

    安装MySQL之后修改编码方式

    在Linux系统上,更改MySQL的默认字符集通常涉及修改`my.cnf`配置文件。该文件通常位于`/etc/mysql/my.cnf`(根据不同的系统版本可能会有所不同)。使用文本编辑器如`vi`或`nano`打开这个文件,找到对应的配置段: 1...

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

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

    如何修改mysql字符集

    ### 如何修改MySQL字符集 在安装MySQL之后,默认情况下,MySQL服务器使用的字符集可能是`latin1`。...通过上述步骤,可以成功地将MySQL的字符集从`latin1`更改为`utf8`,从而更好地支持各种字符编码需求。

    MySQL字符编码设置方法

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

    MYSQL字符集乱码的解决

    ### MySQL字符集乱码问题及解决方案 #### 一、问题背景 在使用MySQL数据库时,很多用户会遇到中文字符显示为乱码的情况。这通常是因为MySQL数据库中的字符集设置不一致导致的。例如,在命令行下操作MySQL时,可能会...

    更改MySql数据库的默认编码格式

    更改 MySql 数据库的默认编码格式 ...更改 MySQL 数据库的默认编码格式可以通过修改配置文件、客户端工具和 Web.config 文件中的设置来实现。这将保证我们的应用程序能够正确地读取和写入数据,避免乱码问题的出现。

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

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

    Mysql字符集

    常见的校对规则后缀有_ci(大小写不敏感)、_cs(大小写敏感)和_bin(基于字符编码的二进制比较)。 #### 二、MySQL字符集的设置层级 MySQL字符集和校对规则的设置具有层次性,分为四个级别: 1. **服务器级**:...

Global site tag (gtag.js) - Google Analytics