MySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。
查看系统的字符集和排序方式的设定可以通过下面的两条命令:
mysql> SHOW VARIABLES LIKE 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
7 rows in set (0.00 sec)
mysql> SHOW VARIABLES LIKE 'collation_%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)
上面列出的值就是系统的默认值。
一般就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句:
SET NAMES 'utf8';
它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
而MySQL数据库的4.1是一个分水岭,4.1直接支持Unicode,它以下版本支持的不好;
MySQL JDBC Driver的3.0.16也是一个分水岭,3.0.16版本会取数据库本身的编码,然后按照该编码转换,这种方式和Oracle的JDBC Driver是一样的。例如你的数据库是GBK编码的话,JDBC Driver就会把数据库里面的取出来的字符串按照GBK往unicode转换,送给JVM。因此正确的设置数据库本身的编码就尤为重要。
MySQL JDBC Driver3.0.16以下的版本则不然,它不会那么智能的根据数据库编码来确定如何转换,它总是默认使用ISO8859-1,因此你必须使用 characterEncoding=GBK来强制他把数据库中取出来的字符串按照GBK来往unicode转换。
因此,使用什么数据库版本,不管是3.x,还是4.0.x还是4.1.x,其实对我们来说不重要,重要的有二:
1) 正确的设定数据库编码,MySQL4.0以下版本的字符集总是默认ISO8859-1,MySQL4.1在安装的时候会让你选择。如果你准备使用UTF- 8,那么在创建数据库的时候就要指定好UTF-8(创建好以后也可以改,4.1以上版本还可以单独指定表的字符集)
2) 使用3.0.16以上版本的JDBC Driver,那么你就不需要再写什么characterEncoding=UTF-8
分享到:
相关推荐
MySQL作为全球广泛使用的开源关系型数据库管理系统之一,其字符集的设置直接影响到数据的编码方式,进而影响到数据的正确性与国际化支持。本文将深入探讨如何设置MySQL的字符集,以及解决因字符集配置不当导致的乱码...
例如,在命令行下操作MySQL时,可能会观察到数据库服务器、数据库本身、客户端以及连接的字符集配置不一致。 #### 二、乱码原因分析 根据题目提供的内容,我们可以看到初始情况下,所有相关的字符集均为`latin1`,...
本教程将详细介绍如何在Linux环境下设置MySQL数据库的字符集为UTF-8,并讲解如何重启MySQL服务。 首先,我们需要找到MySQL的配置文件`my.cnf`。这个文件通常位于`/etc/my.cnf`或`/etc/mysql/my.cnf`。如果没有默认...
MySQL字符集设置是数据库管理中的一个重要环节,尤其是在处理多语言数据或者有特殊字符需求的应用中。字符集决定了数据库、表以及字段如何存储和显示字符,影响到数据的正确性及兼容性。以下将详细讲解MySQL字符集的...
使用下面的命令来查看MySQL中与字符集相关的变量设置: ```sql mysql> SHOW VARIABLES LIKE 'character_set_%'; ``` 这个命令会显示所有以`character_set_`开头的变量,包括但不限于: - `character_set_client`:...
在MySQL数据库管理中,字符集的正确设置至关重要。它直接影响到数据的存储与检索效果,尤其是对于包含多种语言文本的应用场景而言。本文将围绕“MySQL字符集转换”这一主题展开讨论,通过对给定文件中的标题、描述、...
为了确认字符集是否已成功修改,可以在MySQL命令行工具中执行以下命令查看当前配置: ```sql SHOW VARIABLES LIKE 'character_set%'; SHOW VARIABLES LIKE 'collation%'; ``` 如果显示的字符集为`utf8`,则表示...
MySQL命令行&MySql外键设置详解 .txt
- **设置字符集**:MySQL允许在不同层级设置字符集,包括服务器级、数据库级、表级和字段级。如果没有明确指定字符集,那么它将继承上级的字符集设置。例如,可以通过以下命令设置服务器的默认字符集: ```sql SET...
3. **修改my.cnf配置文件**:编辑MySQL服务端的配置文件`my.cnf`,在`[mysqld]`或`[mysql]`节下添加`init-connect='SET NAMES utf8'`,这样每次启动MySQL服务时都会自动设置字符集为UTF-8。 - 示例配置: ``` ...
通过合理设置 MySQL 的字符集,可以有效避免因字符集不匹配导致的乱码问题。具体而言,需要注意客户端和服务端之间的字符集设置、创建表时的字符集选择以及数据插入和查询时的字符集处理等几个方面。希望本文能帮助...
本文将深入探讨MySQL字符集的基础概念、设置方法以及如何在实际操作中进行字符集的转换。 #### 一、理解MySQL字符集与校对规则 **1. 字符集(Character Set)**:字符集是数据库用来存储和处理文本数据的一组字符...
如果没有指定字符集或校对集,MySQL将使用服务器级别的默认设置。 ##### 2. 表层面的校对集设置 创建表时也可以指定表的字符集和校对集: ```sql CREATE TABLE tbl_name (column_list) [DEFAULT CHARACTER SET ...
查看mysql字符集MySQL 乱码的根源是的 MySQL 字符
3. **通过命令行设置字符集**:还可以直接在MySQL命令行中设置各种字符集参数: ```sql SET character_set_client=utf8; SET character_set_connection=utf8; SET character_set_database=utf8; SET character_...
Mysql字符集编码详解 Mysql数据库中的字符集编码问题是许多开发者经常遇到的一个问题,特别是在JAVA项目中。解决这个问题需要从多方面入手,包括服务器、数据库、数据表和连接等四个层次。这篇文章将详细介绍如何...
MySQL字符集设置原理及其常见问题解决是数据库管理中不可或缺的一部分,尤其对于处理多语言或特殊字符的数据时,正确的字符集配置至关重要。字符集定义了数据库、表和字段能存储的字符范围,它决定了数据的编码和...
服务器级字符集是整个MySQL实例的默认字符集,而数据库级字符集则为特定数据库设置。此外,表和列也可以有自己的字符集设置,这允许对不同数据进行定制化的编码处理。 创建数据库时,可以使用`CREATE DATABASE`语句...
MySQL 的字符集支持有两个方面:字符集(Character set)和排序方式(Collation)。可以使用以下命令来查看系统的字符集和排序方式的设定: 1. 查看字符集:mysql> SHOW VARIABLES LIKE 'character_set_%'; 2. 查看排序...