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”属性"。
相关推荐
在MySQL数据库中,正确设置中文显示对于处理中文数据至关重要,特别是对于初学者来说,这是一个常见的挑战。本教程将详述如何避免中文乱码问题,确保数据库、表和列能够正常显示中文内容。 首先,我们需要理解MySQL...
这主要涉及到字符编码的兼容性和设置问题,尤其是在使用MySQL数据库与不同编程语言(如Java、JSP)进行交互时更为突出。以下是对如何解决连接MySQL时中文显示乱码问题的详细解析。 ### 解决中文显示乱码的关键知识...
Java 中 MySQL 中文乱码问题是数据库开发中常见的问题之一,解决这个问题需要对数据库、JSP 和 Tomcat 进行相应的设置。下面我们将详细介绍解决该问题的方案。 数据库编码修改 首先,我们需要修改 MySQL 数据库的...
以下将详细讲解MySQL字符集的概念、设置方法以及在实际应用中可能出现的问题和解决方案。 1. **字符集概念**: - **字符集(Character Set)**:是一系列字符的集合,例如ASCII、GBK、UTF-8等,定义了字符的编码...
在MySQL数据库中遇到中文乱码问题,这通常是由于字符集设置不正确导致的。这个问题的解决方案涉及多个层面,包括MySQL服务器配置、数据库、表以及字段的字符集设定。以下是最简单且有效的解决方法: 首先,我们需要...
- `DEFAULT_CHARSET`和`DEFAULT_COLLATION`:设置默认字符集和排序规则。 - `WITH_DEBUG`:设置为0表示禁用调试模式。 6. **构建和安装MySQL**: 执行`make`命令编译源码,然后使用`make install`将MySQL安装到...
- **修改MySQL配置文件**:编辑`my.ini`或`my.cnf`文件,设置MySQL的默认字符集为`utf8`,示例配置如下: ```ini [mysql] default-character-set=utf8 [mysqld] default-character-set=utf8 default-storage...
- 打开MySQL的配置文件`my.ini`或`my.cnf`,并设置`default-character-set=utf8`。同时,可以在`[mysqld]`下加入`default-collation=utf8_bin`以及`init_connect='SET NAMES utf8'`。 - **在PHP脚本中设置字符集**...
在MySQL数据库系统中,字符集(charset)和校对集(collation)是决定数据存储和检索时如何处理字符的重要设置。UTF-8是一种广泛使用的多语言字符编码,支持世界上大部分语言,包括中文。本篇文章将详细介绍如何通过...
可以通过以下命令来查看和设置字符集: ```sql -- 查看当前会话的字符集设置 SHOW VARIABLES LIKE 'character_set%'; -- 设置服务器层面的字符集 SET character_set_server = 'utf8'; -- 设置客户端和连接字符集 ...
在MySQL数据库中处理中文字符时,可能会遇到插入和读取中文数据出现乱码的问题。这个问题通常是由于字符编码不一致导致的。以下是一些关键知识点,帮助你理解和解决MySQL中文乱码问题。 1. **字符集与编码** - **...
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`的用户组和用户,并为其分配必要的权限。 ```bash # 创建用户组 groupadd mysql # 创建用户并指定所属组 useradd -g mysql mysql # 创建MySQL相关的目录结构 chown -R mysql:mysql /...
通过对以上知识点的阐述,我们可以得出结论:解决MySQL中文乱码问题通常涉及合理设置字符集和校对规则,并确保从客户端到数据库以及Web页面的整个数据传输过程中字符集的统一性和正确性。通过上述技术点的实践应用,...
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 数据库的默认编码格式可以通过修改配置文件、客户端工具和 Web.config 文件中的设置来实现。这将保证我们的应用程序能够正确地读取和写入数据,避免乱码问题的出现。
首先,你需要确保MySQL服务器配置文件(通常为my.cnf)中的默认字符集设置为UTF8。在配置文件中找到`[mysqld]`部分,添加或修改以下行: ``` character-set-server=utf8 collation-server=utf8_general_ci ``` 接...