`

MySql编码问题大全

阅读更多

mysql编码设置



MYSQL 2009-09-11 15:37 阅读73 评论1 字号: 大大 中中 小小

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)

默认就是瑞典latin1,一下是换成我们自己的编码,如utf8:

外部访问数据乱码的问题就出在这个connection连接层上,解决方法是在发送查询前执行一下下面这句:



1. SET NAMES 'utf8';



它相当于下面的三句指令:

SET character_set_client = utf8;

SET character_set_results = utf8;

SET character_set_connection = utf8;



一般只有在访问之前执行这个代码就解决问题了,下面是创建数据库和数据表的,设置为我们自己的编码格式。

2. 创建数据库

mysql> create database name character set utf8;



3. 创建表

CREATE TABLE `type` (

`id` int(10) unsigned NOT NULL auto_increment,

`flag_deleted` enum('Y','N') character set utf8 NOT NULL default 'N',

`flag_type` int(5) NOT NULL default '0',

`type_name` varchar(50) character set utf8 NOT NULL default '',

PRIMARY KEY (`id`)

) DEFAULT CHARSET=utf8;



4. 修改数据库成utf8的.

mysql> alter database name character set utf8;



5. 修改表默认用utf8.

mysql> alter table type character set utf8;



6. 修改字段用utf8

mysql> alter table type modify type_name varchar(50) CHARACTER SET utf8;



===================================================================







最近开始使用MySql,以前都是用Oracle,嫌太贵了,呵呵

编码算是MySql最难弄的问题了,研究了一下,总结点结果,部分来自其他人的经验,如有不妥之处,请踊跃叽歪啊。。。



设置步骤:



一、编辑MySql的配置文件

MySql的配置文件Windows下一般在系统目录下或者在MySql的安装目录下名字叫my.ini,可以搜索,Linux下一般是 /etc/my.cnf



--在 [mysqld] 标签下加上三行

default-character-set = utf8

character_set_server = utf8

lower_case_table_names = 1 //表名不区分大小写(此与编码无关)



--在 [mysql] 标签下加上一行

default-character-set = utf8



--在 [mysql.server]标签下加上一行

default-character-set = utf8



--在 [mysqld_safe]标签下加上一行

default-character-set = utf8



--在 [client]标签下加上一行

default-character-set = utf8





二、重新启动MySql服务

Windows可在服务管理器中操作,也可使用命令行:

net stop mysql 回车

net start mysql 回车

服务名可能不一定为mysql,请按自己的设置



Linux下面可是用 service mysql restart



如果出现启动失败,请检查配置文件有没有设置错误







三、查看设置结果

登录MySql命令行客户端:打开命令行

mysql –uroot –p 回车

输入密码

进入mysql后 执行 :show variables like "%char%";

显示结果应该类似如下:



| character_set_client | utf8 |

| character_set_connection | utf8 |

| character_set_database | utf8 |

| character_set_results | utf8 |

| character_set_server | utf8 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |



如果仍有编码不是utf8的,请检查配置文件,也可使用mysql命令设置:

set character_set_client = utf8;

set character_set_server = utf8;

set character_set_connection = utf8;

set character_set_database = utf8;

set character_set_results = utf8;

set collation_connection = utf8_general_ci;

set collation_database = utf8_general_ci;

set collation_server = utf8_general_ci;

以上命令有部分只对当前登录有效,所以不是很管用。



四、建库导入数据

导入sql脚本文件前,先确保该脚本文件及内容格式为UTF-8编码格式,

同以上方法登入mysql命令行,use 库名 进入相应数据库

set names utf8;

source sql脚本文件名;



五、程序连接字符串(此项与mysql设置无关,为程序开发使用)

对于较老的jdbc版本的驱动,连接字符创可使用一下相似格式:

jdbc:mysql://127.0.1:3306/test?useUnicode=true&characterEncoding=utf-8







六、附录

如果无法更改数据库配置文件,可以采取一下方法(不保证全部有效):

1、建数据库时设置数据库编码为utf-8

例如 create database `test` default character set utf8;





2、导入数据库sql的时候,请确保sql文件为utf-8编码

进入mysql命令行后 输入 set names utf8;

再进入数据库 use test;

在导入sql脚本 source test.sql;





3、连接字符串类似如下:(开发相关,非数据库设置)

jdbc:mysql://127.0.1:3306/test?useUnicode=true&characterEncoding=utf-8

 

分享到:
评论

相关推荐

    mysql乱码问题解决

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

    mysql中文乱码问题

    MySQL 中文乱码问题解决方法 MySQL 是一个功能强大且广泛应用的关系型数据库管理系统,但是,在使用 MySQL 时,用户经常会遇到中文乱码问题。今天,我们将讨论在 MySQL 中的中文乱码问题,并提供解决方法。 MySQL...

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

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

    hibernate+mysql乱码问题

    在开发Java Web应用程序时,经常会遇到数据库操作中的字符编码问题,特别是当使用Hibernate框架与MySQL数据库结合时。本文将深入探讨“hibernate+mysql乱码问题”的原因、解决方案以及如何预防这类问题。 首先,...

    mysql乱码解决问题

    假设我们需要解决一个使用GB2312编码的客户端向使用GBK编码的MySQL服务器发送数据时出现的乱码问题。 1. **检查服务器端字符集设置** - 登录MySQL服务器,执行: ```sql SHOW VARIABLES LIKE 'character%'; ```...

    MySql乱码问题解决方法

    MySQL数据库在处理字符集时可能出现乱码问题,这通常是由于编码设置不一致或者不正确导致的。本篇文章将深入探讨MySQL乱码问题的原因,并提供一系列详细的解决方法。 1. **问题原因** - **编码不匹配**:数据库、...

    解决mysql乱码问题全解决

    遇到乱码问题是较为常见的现象之一,尤其是对于频繁更换虚拟主机环境的用户来说,由于不同的服务提供商可能采用不同的MySQL版本,这很容易导致数据导入后出现字符编码不匹配的问题,从而引发乱码。本文将详细介绍...

    c#解决mysql乱码问题的解决及mysql数据库操作的封装

    在C#编程中,与MySQL数据库交互时可能会遇到编码问题,导致数据乱码。这个问题通常是由于编码不一致或设置不当造成的。本篇文章将详细介绍如何解决MySQL数据库中的乱码问题,并探讨如何通过C#进行数据库操作的封装,...

    mysql汉字乱码问题

    MySQL中的汉字乱码问题是一个常见的困扰许多开发人员和数据库管理员的问题。这主要涉及到字符编码设置不正确,导致在存储或显示汉字时出现乱码。在MySQL中,字符集是用来定义如何存储和处理字符的规则,它包括服务器...

    windows访问远程linux下mysql乱码问题

    Windows 访问远程 Linux...解决 Windows 访问远程 Linux 下 MySQL 乱码问题需要对 MySQL 的配置文件进行修改,并指定正确的编码方式。在实践中,我们需要根据实际情况选择合适的编码方式,以确保数据的正确性和一致性。

    MySQL乱码解决方案数据库乱码

    在处理MySQL数据库时,遇到字符集编码不一致导致的数据乱码问题非常常见。这不仅会影响数据的正确显示,还可能导致数据丢失或损坏。根据提供的标题、描述、标签以及部分内容来看,本文将围绕MySQL乱码问题进行深入...

    解决C#操作Mysql时中文乱码问题(真的解决了)

    总的来说,解决C#操作MySQL中文乱码问题的关键在于保持从数据库配置到代码再到文件的整个过程中的编码一致性,使用UTF-8编码,并确保在每个环节都正确地指定和处理。通过以上步骤,你应该能够成功地避免中文乱码问题...

    Linux下MySQL解决乱码问题

    ### Linux下MySQL解决乱码问题 #### 背景与问题描述 在使用Linux系统时,部分用户可能会遇到MySQL数据库无法正确显示或录入中文字符的问题,即所谓的“乱码”现象。这种问题不仅影响数据的准确性和完整性,还可能...

    ubuntu mysql中中文乱码问题.docx

    乱码问题可能是由于 MySQL 数据库的字符编码设置不正确所致。解决这个问题需要对 MySQL 数据库的字符编码进行设置和调整。 标题解释 本文档的标题“ubuntu mysql 中中文乱码问题”清晰地表明了问题的来源和解决方案...

    mysql乱码问题解决办法

    ### MySQL乱码问题解决办法 在使用MySQL的过程中,经常会出现字符显示乱码的问题,尤其是在处理中文数据时更为常见。本文将详细介绍如何通过多种途径解决MySQL中的乱码问题,包括更改MySQL服务器的字符集设置、调整...

    mac MySQL中文乱码解决办法

    在macOS系统中,使用MySQL数据库时,可能会遇到中文乱码的问题,这通常是由于字符集设置不正确导致的。本文将详细介绍如何解决macOS系统下MySQL中文乱码的问题,通过修改配置文件my.cnf来调整MySQL的字符集,确保...

    解决mysql乱码问题

    可以完美的帮你解决windows下mysql的乱码问题,保证数据库数据不被乱码侵蚀

    mysql乱码解决方法

    推荐在整个网站项目中统一使用UTF-8编码,包括网页、数据库、文件等,以避免因编码不一致导致的乱码问题。 综上所述,解决MySQL与PHP配合中的乱码问题,关键在于确保从数据库到前端展示的整个流程中,字符集的一致...

Global site tag (gtag.js) - Google Analytics