中文乱码似乎是程序编写中永恒的一个话题和难点,就比如MySQL存取中文乱码,但我想做任何事情,都要有个思路才行,有了思路才知道如何去解决问题,否则,即使一时解决了问题,但过后不久又碰到同样的问题可能又会急得抓狂,MySQL中文乱码问题就是如此。
仅仅对MySQL中文乱码的解决而言,我认为主要的一个原则可以归结为五个字:“编码一致性”,只要遵循了这个原则,那么中文乱码就不难解决,那么何为“编码一致性”呢?子猴总结为有如下四个方面的编码必须保持一致,才能防止中文的乱码,下面将具体讲解。
首先我要设定的编码为UTF8,为何要设定UTF8编码呢?那是因为这是通用编码,像中国通常使用的GBK、GB2312、Big5等只是针对中文而言,但是对其他文字就不适用了,为了使得这个问题的解决具有文字编码通用性,所以我这里设定了UTF8这个编码。
编码一致性涉及到的四个方面为:应用程序编码、数据库系统编码、数据库编码、应用程序与数据库系统的连接编码。
1、 应用程序编码
指的是你在程序文件中的文字编码,以jsp文件为例来说明,就是你jsp的网页编码,比如:
<%@ page contentType="text/html; charset=UTF-8" %>
在这样的页面中,往往是调用数据库接口对数据库进行存取操作。
2、 与之对应的数据库系统编码
数据库系统就是你所用的MySQL(及其他数据库系统),数据库系统的编码要与应用程序编码一致,其编码设置根据操作系统的不同可以通过以下方式设置
2.1、Windosw环境下的MySQL编码设置
A、中止MySQL服务
B、在MySQL的安装目录下找到my.ini,如果没有就把my-medium.ini复制为一个my.ini即可
C、打开my.ini以后,在[client]和[mysqld]下面均加上default-character-set=utf8,保存并关闭
D、启动MySQL服务
(注:Windows环境下的设置我没有验证过)
2.2、Linux环境下的MySQL编码设置
首先我们登录到mysql,执行: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/ |
+————————–+—————————-+
也就是默认编码都是latin1,很显然,我们要修改为UTF8。
通过:vi /etc/mysql/my.cnf修改my.cnf文件,这里需要注意的是,如果my.cnf文件不存在,则进入到mysql的安装目录,通过执行:cp share/mysql/my-large.cnf /etc/my.cnf生成my.cnf文件。
加入的内容如下:
在客户端配置[client]下面添加:
### 默认字符集为utf8
default-character-set=utf8
找到[mysqld]部分,在下面添加:
### 默认字符集为utf8
default-character-set=utf8
### (设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)
init_connect=’SET NAMES utf8′
完毕后重启mysql服务,然后再通过执行show variables like ‘character%’;查看如下:
mysql> 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/ |
+————————–+—————————-+
3、 数据库编码
改完数据库系统编码后,接下来轮到数据库编码了,请注意数据库系统与数据库的区别,数据库指的是你所创建的数据库Database及所包含的表,数据库编码设置很简单,在创建数据表的时候设置,举例如下:
create table Test
(
ID integer not null auto_increment,
NAME varchar(50) comment ‘测试字段’,
TYPE integer,
primary key (ID)
)
default charset utf8;
其中default charset utf8就表示此表的字符编码为utf8。
4、 应用程序与数据库系统的连接编码
连接编码相当于应用程序与数据库系统的沟通桥梁,同样也需要设置编码,我们以JDBC的连接语句来予以说明:
jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&user=test&password=111
上面的语句中为一个test的数据库,用户名为test,密码为111的数据库连接,其编码为characterEncoding=UTF-8。
通过以上四个方面的设置,那么mysql的中文乱码就轻松解决了!
如果你过段时间不记得mysql的中文乱码是如何解决的,那么你只要知道以上的解决思路,我想解决起来肯定会很快的。
分享到:
相关推荐
总的来说,解决C#操作MySQL中文乱码问题的关键在于保持从数据库配置到代码再到文件的整个过程中的编码一致性,使用UTF-8编码,并确保在每个环节都正确地指定和处理。通过以上步骤,你应该能够成功地避免中文乱码问题...
总之,解决MySQL中文乱码问题的关键在于确保所有环节的字符集设置一致且兼容中文。从数据库、表、连接到客户端工具,都需要仔细检查和调整,以确保正确处理中文字符。如果以上方法无效,可能需要检查更深层次的系统...
总之,解决MySQL中的汉字乱码问题需要从多个层面进行检查和调整,确保字符集在整个数据处理链路中的一致性。理解字符集和编码的概念,以及它们在MySQL中的应用,对于避免和解决这类问题至关重要。
以下是对如何解决连接MySQL时中文显示乱码问题的详细解析。 ### 解决中文显示乱码的关键知识点 #### 1. **理解字符集和编码** 字符集(Character Set)是指用于表示文字的一系列符号集合,而编码(Encoding)则是将...
在使用 MySQL 数据库处理中文数据时,经常会遇到一个让人头疼的问题——中文乱码。中文乱码不仅影响用户体验,还可能导致数据丢失或者错误,因此解决这个问题至关重要。 **出现乱码的原因** 多数情况下是由于 MySQL...
在MySQL 5.6中遇到中文乱码问题,通常是由于字符集配置不正确导致的。字符集决定了数据库如何存储和显示非英文字符,尤其是对于中文这样的多字节字符集而言,正确的配置至关重要。以下是解决MySQL 5.6中文乱码问题的...
在使用Navicat for MySQL工具进行数据导入时,经常会出现中文乱码的问题,尤其是在处理Excel文件时更为常见。这种现象不仅影响数据的正确性,还可能导致后续的数据分析和处理出现错误。因此,有效地解决Navicat for ...
这样,在数据导入时,MySQL 将使用 GBK 编码来处理中文字符,从而避免中文乱码问题。 解决方案二:修改 MySQL 配置文件 在 MySQL 4.0 中,可以通过修改 MySQL 配置文件来解决中文乱码问题。具体来说,可以按照以下...
本文将深入探讨MySQL中文乱码问题的原因、解决方法,以及如何在创建数据库和表时避免这类问题。 首先,我们要了解字符集的概念。字符集(Character Set)是计算机系统用来表示文本的一系列符号和编码,例如ASCII、...
### Java插入MySQL中文乱码解决 #### 一、问题背景 在使用Java应用程序与MySQL数据库交互的过程中,常常会遇到一个令人头疼的问题:中文字符在存储到数据库时出现乱码现象。这种现象通常发生在使用JDBC(Java ...
### MySQL运行SQL语句中文乱码问题的解决方法 在MySQL数据库中运行包含中文字符的SQL语句时,经常会遇到中文显示为乱码的问题。这一现象不仅降低了开发效率,还可能导致数据错误。本文将详细介绍如何彻底解决MySQL...
综上所述,解决MySQL中文乱码问题并非一蹴而就,而是需要从多个角度出发,综合考虑系统配置、数据库设置、连接参数及操作命令等多个层面,才能从根本上消除乱码现象,实现中文数据的准确处理与展示。
以下将详细分析并解决PHP向MySQL插入中文乱码问题,以及如何正确处理PHP文件内容写入数据库。 首先,我们需要确保数据库的编码设置正确。MySQL数据库通常使用UTF-8编码,因此创建数据库和表时应指定`CHARACTER SET ...
### 使用ETL将Excel导入MySQL并处理乱码问题 在数据处理领域,ETL(Extract, Transform, Load)工具被广泛应用于数据集成过程中,用于从不同的数据源提取数据、转换数据格式以及加载到目标系统中。本文将详细介绍...
MySQL 数据库乱码处理 MySQL 数据库字符乱码问题是数据库管理中常见的问题之一。造成乱码的原因多种多样,可能是由于数据库字符集的不正确设置、数据导入时的编码错误等。下面我们将详细讨论 MySQL 数据库乱码处理...
本文将详细介绍如何解决macOS系统下MySQL中文乱码的问题,通过修改配置文件my.cnf来调整MySQL的字符集,确保中文能够正常显示。 ### 解决方案详解 #### 步骤一:定位my.cnf配置文件 首先,需要找到或创建MySQL的...
C++操作MariaDB和MySql中文乱码或无法处理中文的解决办法 在使用C++操作MariaDB和MySQL数据库时,中文乱码或无法处理中文是一个常见的问题。本文将介绍如何解决这个问题,确保C++程序正确地处理中文。 解决方法 ...
### MySQL中文乱码问题完美解决方案 #### 背景与问题描述 在处理MySQL数据库时,中文乱码问题是一个常见的技术挑战。这类问题通常源于字符集设置不一致或配置不当,尤其是在不同系统环境(如开发环境与生产环境)...
本文将深入探讨“hibernate+mysql乱码问题”的原因、解决方案以及如何预防这类问题。 首先,我们需要了解乱码问题的根源。在数据库层面,MySQL的编码格式对数据存储和检索至关重要。如果数据库、表或列的字符集不...