`
沙漠绿树
  • 浏览: 429638 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

MySql中charset 和 collation的设置

 
阅读更多

Mysql中的charset 和 collation 有多个级别的设置:服务器级、数据库级、表级、列级和连接级 

 

1.服务器级 

   查看设置:show global variables like 'character_set_server'; 和 show global variables like 'collation_server'; 

   修改设置:在OPTION FILE (/etc/mysql/my.cnf)里设置: 

   [mysqld] 

    character_set_server=utf8 

    collation_server=utf8_general_ci 

 

2. 数据库级 

   查看设置:select * from information_schema.schemata where schema_name = 'cookbook'; 

   设置: 

     1.若没有显式设置,则自动使用服务器级的配置 

     2.显式设置:在创建库时指定 

       create database playUtf8  DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; 

 

3.表级 

   查看设置:show create table course; 

   设置: 

     1.若没有显式设置,则自动使用数据库级的配置 

     2.显式设置:在创建表时指定 

       create table utf ( id int ) default charset=utf8 default collate=utf8_bin; 

 

4.列级 

   查看设置:show create table course; 

   设置: 

     1.若没有显式设置,则自动使用表级的配置 

     2.显式设置: 

 

     CREATE TABLE Table1(column1 VARCHAR(5) CHARACTER SET latin1 COLLATE latin1_german1_ci); 

 

5.连接级别 

  查看设置: 

     show variables like 'character_set_client';  # 服务端使用这个编码来理解客户端发来的statements 

     show variables like 'character_set_connection' ; # 我还不知道什么意思,等看了mysql源码再说 

     show variables like 'character_set_results'; # 服务端使用这个编码回送结果集和错误信息 

  设置: 

     客户端在连接时可以指定这些参数;同时,服务端也提供了一个Global范围的值,客户端未指定这些参数时,服务端就使用这个Global值。这个global值怎么设置的? 我查遍了很多文档,似乎还没看到设置的办法 (有人说通过my.cnf,或者在启动mysqld时指定命令行参数,其实都是错的) 

 

附:connector/j传输SQL时用什么编码? 

答案:"The character encoding between client and server is automatically detected upon connection. The encoding used by the driver is specified on the server using the character_set_server system variable for server versions 4.1.0 and newer." 也就是说,是在连接时查询服务器端的character_set_server值,再确定连接将使用的编码。不过,官方文档还说,"要想覆盖客户端上的自动检测编码功能,可在用于连接到服务器的URL中使用“characterEncoding”属性"。

 

本文转载:http://chenjianjx.iteye.com/blog/1393815

分享到:
评论

相关推荐

    MySQL数据库 中文设置

    在MySQL数据库中,正确设置中文显示对于处理中文数据至关重要,特别是对于初学者来说,这是一个常见的挑战。本教程将详述如何避免中文乱码问题,确保数据库、表和列能够正常显示中文内容。 首先,我们需要理解MySQL...

    解决连接mysql中文显示乱码

    这主要涉及到字符编码的兼容性和设置问题,尤其是在使用MySQL数据库与不同编程语言(如Java、JSP)进行交互时更为突出。以下是对如何解决连接MySQL时中文显示乱码问题的详细解析。 ### 解决中文显示乱码的关键知识...

    java中MySQL中文乱码问题解决方案

    Java 中 MySQL 中文乱码问题是数据库开发中常见的问题之一,解决这个问题需要对数据库、JSP 和 Tomcat 进行相应的设置。下面我们将详细介绍解决该问题的方案。 数据库编码修改 首先,我们需要修改 MySQL 数据库的...

    mysql字符集设置

    以下将详细讲解MySQL字符集的概念、设置方法以及在实际应用中可能出现的问题和解决方案。 1. **字符集概念**: - **字符集(Character Set)**:是一系列字符的集合,例如ASCII、GBK、UTF-8等,定义了字符的编码...

    Mysql 中文乱码 最简单的解决办法

    在MySQL数据库中遇到中文乱码问题,这通常是由于字符集设置不正确导致的。这个问题的解决方案涉及多个层面,包括MySQL服务器配置、数据库、表以及字段的字符集设定。以下是最简单且有效的解决方法: 首先,我们需要...

    MySQL源码安装和简单使用

    - `DEFAULT_CHARSET`和`DEFAULT_COLLATION`:设置默认字符集和排序规则。 - `WITH_DEBUG`:设置为0表示禁用调试模式。 6. **构建和安装MySQL**: 执行`make`命令编译源码,然后使用`make install`将MySQL安装到...

    PHP+MySql中文乱码解决办法

    - **修改MySQL配置文件**:编辑`my.ini`或`my.cnf`文件,设置MySQL的默认字符集为`utf8`,示例配置如下: ```ini [mysql] default-character-set=utf8 [mysqld] default-character-set=utf8 default-storage...

    PHP+MySql中文乱码解决方案

    - 打开MySQL的配置文件`my.ini`或`my.cnf`,并设置`default-character-set=utf8`。同时,可以在`[mysqld]`下加入`default-collation=utf8_bin`以及`init_connect='SET NAMES utf8'`。 - **在PHP脚本中设置字符集**...

    mysql通过my.cnf修改默认字符集为utf-8的方法和注意事项

    在MySQL数据库系统中,字符集(charset)和校对集(collation)是决定数据存储和检索时如何处理字符的重要设置。UTF-8是一种广泛使用的多语言字符编码,支持世界上大部分语言,包括中文。本篇文章将详细介绍如何通过...

    mysql字符集和校对集

    可以通过以下命令来查看和设置字符集: ```sql -- 查看当前会话的字符集设置 SHOW VARIABLES LIKE 'character_set%'; -- 设置服务器层面的字符集 SET character_set_server = 'utf8'; -- 设置客户端和连接字符集 ...

    mysql 插入中文读取中文无乱码 2

    在MySQL数据库中处理中文字符时,可能会遇到插入和读取中文数据出现乱码的问题。这个问题通常是由于字符编码不一致导致的。以下是一些关键知识点,帮助你理解和解决MySQL中文乱码问题。 1. **字符集与编码** - **...

    MySQL 5.6.25 源码包+安装方法 (mysql-5.6.25.tar.gz)

    4.3 重新设置MySQL安装目录的权限(除data目录外,其余所有目录及文件均修改用户为root,组不变) # chown -R root . # chown -R mysql data 4.4 启动mysql_safe # bin/mysqld_safe --user=mysql & 4.5 设置MySQL的...

    MYSQL安装步骤-5.7.17

    因此,需要创建一个名为`mysql`的用户组和用户,并为其分配必要的权限。 ```bash # 创建用户组 groupadd mysql # 创建用户并指定所属组 useradd -g mysql mysql # 创建MySQL相关的目录结构 chown -R mysql:mysql /...

    mysql中文成乱码.pdf

    通过对以上知识点的阐述,我们可以得出结论:解决MySQL中文乱码问题通常涉及合理设置字符集和校对规则,并确保从客户端到数据库以及Web页面的整个数据传输过程中字符集的统一性和正确性。通过上述技术点的实践应用,...

    mysql8.0.33的Linux编译安装文件

    cmake ../mysql-8.0.33 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DWITH_SSL=yes -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci ``` 7. **编译和安装**: 现在可以编译和安装MySQL了: `...

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

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

    mysql示例数据库(world)_解决中文乱码_使用UTF8字符集

    首先,你需要确保MySQL服务器配置文件(通常为my.cnf)中的默认字符集设置为UTF8。在配置文件中找到`[mysqld]`部分,添加或修改以下行: ``` character-set-server=utf8 collation-server=utf8_general_ci ``` 接...

Global site tag (gtag.js) - Google Analytics