`
deepsea0001
  • 浏览: 8152 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Mysql中文乱码的几个解决方法

阅读更多
1:改变数据库的默认编码配置,在MYSQL的安装目录中,找到my.ini,修改默认编码为:default-character-set=utf8

2:建立数据库时,CREATE DATABASE ms_db CHARACTER SET utf8 COLLATE utf8_general_ci;

3:执行脚本:指定编码格式set names utf8(注意,不是UTF-8

4:如果你采用的是外部接入的方式,在连接中确定请求的编码格式如:jdbc:mysql://localhost:3306 /ms_db?useUnicode=true&characterEncoding=UTF-8(不要出现任何空格,否则出错)

5:set character_set_results=gbk;(解决命令行乱码问题);

--------------------------------------------------------------------------------

问题的关键在于数据导出、导入时要做到所使用的字符集相一致:
1、mysqldump 的 default-character-set变量;
2、mysql 的--default-character-set变量;
3、mysqld的 Db characterset变量。
例如:备份使用latin1字符集则恢复时也要使用该字符集并且数据库的缺省字符集也要是该字符集,即latin1. 换成gbk也应该一样.

乱码的根源在于字符集的不一致:操作系统(Windows为gbk,Linux是UTF-8),数据库(CREATE DATABASE db_name DEFAULT CHARACTER SET gbk 或者CREATE DATABASE db_name DEFAULT CHARACTER SET latin1)使用图形界面是就更要注意其缺省配置。

--------------------------------------------------------------------------------

在这里我把自己知道的东东贴出来,还望大家多多提意见,补充,谢谢~~

show variables like 'character%';查看字符编码

--更改字符集
SET character_set_client = utf-8 ;
SET character_set_connection = utf-8 ;
SET character_set_database = utf-8 ;
SET character_set_results = utf-8 ;
SET character_set_server = utf-8 ;


SET collation_connection = utf8 ;
SET collation_database = utf8 ;
SET collation_server = utf8 ;


MySQL的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次:
      服务器(server),数据库(database),数据表(table)和连接(connection)。

      1.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 存储。


       2.查看默认字符集(默认情况下,mysql的字符集是latin1(ISO_8859_1)通常,查看系统的字符集和排序方式的设定可以通过下面的两条命令:
     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       | D:"mysql-5.0.37"share"charsets" |
+--------------------------+---------------------------------+

mysql> SHOW VARIABLES LIKE 'collation_%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+

3.修改默认字符集
(1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值,
如    default-character-set = utf8
      character_set_server = utf8
   修改完后,重启mysql的服务,service mysql restart
   使用 mysql> SHOW VARIABLES LIKE 'character%';查看,发现数据库编码均已改成utf8
+--------------------------+---------------------------------+
| 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       | D:"mysql-5.0.37"share"charsets" |
+--------------------------+---------------------------------+

   (2) 还有一种修改字符集的方法,就是使用mysql的命令
     SET character_set_client = utf8 ;
     SET character_set_connection = utf8 ;
     SET character_set_database = utf8 ;
     SET character_set_results = utf8 ;
     SET character_set_server = utf8 ;

     mysql> SET collation_connection = utf8 ;
     mysql> SET collation_database = utf8 ;
     mysql> SET collation_server = utf8 ;

一般就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句:
SET NAMES 'utf8';

它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;

不知道什么原因,我在自己机器上把上述三个字符集都设置成utf8后,查询中文结果还是乱码,只有把character_set_results设置成GBK之后才能从命令行正常显示中文.
set character_set_results=GBK;

---------------------------------------------------------------

如果用eclipse :
   点击Window-->Preferences,展开General-->WorkSpace,看到左边的Text file encoding没有,默认的设定是简体中文编码(gbk,gb2312这样),而linux下面呢,是UTF-8。

当你新建一个项目,希望使用和WorkSpace不同编码,请右击你的项目,选择Properties,点击Resource,看到Text file encoding了吧,点击Other,选择UTF-8


最后,将my.ini中的两处default 的字符集改为gbk不要使用utf8








分享到:
评论

相关推荐

    在DELPHI中使用MyDAC连接MySQL数据库时中文显示乱码的解决方法

    ### 在DELPHI中使用MyDAC连接MySQL数据库时中文显示乱码的解决方法 #### 背景介绍 在软件开发过程中,特别是涉及到多语言环境的应用程序开发时,字符编码问题常常成为开发者需要解决的一个重要问题。对于使用...

    java插入mysql中文乱码解决

    中文乱码主要由以下几个方面的原因引起: 1. **字符集不一致**:如果Java程序、JDBC驱动、MySQL服务器以及数据库表的字符集设置不一致,就会导致中文乱码。例如,如果Java程序使用的是GBK编码,而MySQL服务器使用的...

    mysql中文乱码的解决方法

    ### MySQL中文乱码的解决方法 #### 一、问题背景 在使用MySQL的过程中,经常会遇到中文乱码的问题,这不仅影响了数据的正确读取,也会导致用户体验下降。中文乱码的原因主要有以下几点: 1. **Server本身的设定...

    PHP+MySql中文乱码解决办法

    为了确保PHP与MySQL之间的数据交互不会出现乱码问题,还需要进行以下几个方面的设置: - **修改MySQL配置文件**:编辑`my.ini`或`my.cnf`文件,设置MySQL的默认字符集为`utf8`,示例配置如下: ```ini [mysql] ...

    PHP+MySql中文乱码解决方案

    6. **PHP连接MySQL时指定的编码不正确**:在PHP脚本中连接MySQL时,如果没有正确指定编码,也会引起乱码问题。 #### 三、解决方案 针对以上提到的乱码原因,我们可以通过以下步骤来逐一解决: ##### 1. PHP网页的...

    彻底解决C# asp.net连接MySQL乱码问题

    ### 彻底解决C# ASP.NET 连接MySQL乱码问题 在开发过程中,尤其是在处理中文数据时,经常遇到的一个问题是数据库连接时出现乱码。本文将详细介绍如何彻底解决使用C# ASP.NET 应用程序连接 MySQL 数据库时出现的乱码...

    Mysql插入中文乱码问题解决

    解决 MySQL 中文乱码问题的方法主要有以下几种: 1. **在 JDBC 连接字符串中添加字符集参数** - 在使用 Java 等语言连接 MySQL 数据库时,可以在 JDBC 连接字符串中添加 `useUnicode=true&characterEncoding=utf-8...

    mysql乱码的解决方法

    ### MySQL乱码问题解决方案 #### 一、理解MySQL乱码问题 在使用MySQL数据库时,乱码问题是开发者经常遇到的问题之一。它不仅影响数据的准确读取与展示,还可能影响到系统的整体用户体验。通常,MySQL乱码问题的...

    mysql中文乱码解决

    针对中文乱码的问题,本文将详细介绍几种有效的解决方法: 1. **通过MySQL命令行设置字符集** 2. **调整MySQL配置文件(my.ini)中的字符集** 3. **在创建数据库时指定字符集** 4. **在数据库连接时指定字符集** ###...

    mysql乱码解决问题

    针对MySQL乱码问题,可以从以下几个方面入手: 1. **系统级别设置** - 修改MySQL服务器的默认字符集。可以在MySQL配置文件`my.cnf`(Linux)或`my.ini`(Windows)中设置: ```ini [mysqld] character-set-...

    mysql乱码问题解决

    ### MySQL乱码问题解决方案 在处理数据库操作时,字符集编码问题经常会导致数据展示或存储过程中出现乱码现象。MySQL作为广泛使用的开源关系型数据库管理系统之一,在实际应用中也难免会遇到字符集不匹配导致的数据...

    C# mysql 插入数据,中文乱码的解决方法

    针对这个问题,本文将详细探讨两种解决C#操作MySQL时中文乱码的方法。 首先,我们要明白字符编码的基本概念。UTF-8是一种广泛使用的Unicode字符编码,它可以表示世界上几乎所有的字符。而GBK或GB2312是中国大陆常用...

    解决mysql乱码问题全解决

    在深入探讨解决方案之前,我们首先需要了解几个与字符集相关的基础知识: 1. **字符集(Character Set)**:用于定义字符与其内部编码方式之间的映射关系。 2. **排序规则(Collation)**:规定了字符集中的字符...

    Mysql中文乱码问题完美解决方案

    为了有效地解决中文乱码问题,我们可以从以下几个方面入手: ##### 1. 创建数据库和表时设置正确的编码格式 - **创建数据库时**: ```sql CREATE DATABASE `test` CHARACTER SET 'utf8' COLLATE 'utf8_general_c...

    MySQL写入中文乱码character

    乱码的产生主要是因为以下几个方面存在不一致: 1. **客户端(Client)字符集**:指客户端与MySQL服务端通信时使用的字符集。 2. **连接(Connection)字符集**:用于客户端与服务端之间的数据传输。 3. **服务器...

    mysql出现中文乱码解决

    在本文中,我们将深入探讨这个问题,并提供一种解决方案——通过修改配置文件来解决MySQL中文乱码。 首先,我们需要了解字符编码的基本概念。字符编码是用来表示文本的一种方式,比如ASCII、GBK和UTF-8等。在中文...

    jsp中文乱码 jsp mysql 乱码的解决方法.docx

    在开发基于JSP和MySQL的Web应用程序时,中文乱码问题是一个经常遇到且困扰开发者的问题。这个问题的出现很大程度上是因为字符编码不一致所导致的。要解决这个问题,开发者需要从JSP页面、Servlet以及MySQL数据库三个...

    MYSQL中文乱码 xx

    根据所提供的文件信息,我们可以深入探讨几个关键的知识点,包括字符集(Character Set)与校对规则(Collation),以及如何在MySQL中正确地配置这些参数来解决中文乱码问题。 ### 知识点一:字符集(Character Set...

    详解多种方法解决MYSQ中文乱码

    本文将详细介绍几种有效的方法来解决MySQL中的中文乱码问题。 #### 方法一:调整命令行与连接参数 此方法适用于经常需要更换虚拟主机的情况,尤其是当面对不同版本的MySQL时(如从4.x升级到5.x)。主要通过调整...

Global site tag (gtag.js) - Google Analytics