(转)MySQL修改编码设置及乱码问题
昨天尝试把自己用php编写的第一个糙站发布到网上..结果出现了因为编码不统一而导致乱码的想象..在"冷雨"童鞋的"控制下"终于把出现乱码的问题解决了...
总结下因为数据库文件的写入和读出出现乱码的情况:
一. 在前台连接写入的时候编码是不是与数据库编码符合
<?php
$conn = @ MYSQL_CONNECT("localhost","root","")OR DIE ("数据库连接错误");
MYSQL_SELECT_DB("millia",$conn);
MYSQL_QUERY('SET NAMES UTF8');//使用UTF8而不是UTF-8中文编码
?>
二、查看MYSQL数据库的编码
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连接层上,解决方法是在发送查询前执行一下下面这句:
SET NAMES 'utf8';
它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
一般只有在访问之前执行这个代码就解决问题了,下面是创建数据库和数据表的,设置为我们自己的编码格式。
创建数据库时编码设置
mysql> create database name character set utf8;
创建表时编码设置
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;
修改数据库成utf8.
mysql> alter database name character set utf8;
修改表默认用utf8.
mysql> alter table type character set utf8;
修改字段用utf8
mysql> alter table type modify type_name varchar(50) CHARACTER SET utf8;
附:MYSQL编码设置步骤
一、编辑MySql的配置文件
MySql的配置文件Windows下一般在系统目录下或者在MySql的安装目录下名字叫my.ini,可以搜索,Linux下一般是 /etc/my.cnf
--在 [mysql] 标签下加上一行
default-character-set = utf8
--在 [mysqld] 标签下加上三行
default-character-set = utf8
character-set-server = utf8
collation-server = utf8_general_ci
init_connect = 'SET collation_connection = utf8_general_ci'
init_connect = 'SET NAMES utf8'
lower_case_table_names = 1 //表名不区分大小写(此与编码无关)
--在 [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 服务器的编码方式,包括 character_set_server 变量的设置和 my.ini 文件中的配置。通过这些方法,我们可以轻松地解决 MySQL 中文乱码问题。
乱码问题可能是由于 MySQL 数据库的字符编码设置不正确所致。解决这个问题需要对 MySQL 数据库的字符编码进行设置和调整。 标题解释 本文档的标题“ubuntu mysql 中中文乱码问题”清晰地表明了问题的来源和解决方案...
解决MySQL连接时中文显示乱码的问题,关键在于确保数据库、连接参数以及应用程序内部各环节的字符集设置保持一致,并采用适合中文字符的编码方式,如UTF-8。通过上述步骤,可以有效避免中文乱码现象,保证数据的正确...
2. **测试验证**:更改设置后,一定要进行充分的测试以验证乱码问题是否已经解决。 3. **性能考虑**:对于大量数据的处理,可以考虑使用 `MySqlDataAdapter` 来填充 `DataSet`,以提高性能。 4. **安全考虑**:在...
【MySQL 远程访问及中文乱码问题】 MySQL 是一款广泛应用的关系型数据库管理系统,它在数据存储、管理和处理方面有着出色的表现。然而,在实际使用过程中,我们可能会遇到两个常见的问题:远程访问限制和中文乱码...
本文将详细探讨如何识别与解决MySQL中的乱码问题,并提供具体的操作步骤及注意事项。 #### 一、理解MySQL中的字符集 在MySQL中,字符集主要涉及以下几个方面: 1. **服务器字符集**:由`character_set_server`...
MySQL中的汉字乱码问题是一个常见的困扰许多开发人员和数据库管理员的问题。这主要涉及到字符编码设置不正确,导致在存储或显示汉字时出现乱码。在MySQL中,字符集是用来定义如何存储和处理字符的规则,它包括服务器...
在处理MySQL数据库时,遇到字符集编码不一致导致的数据乱码问题非常常见。这不仅会影响数据的正确显示,还可能导致数据丢失或损坏。根据提供的标题、描述、标签以及部分内容来看,本文将围绕MySQL乱码问题进行深入...
在开发Java Web应用程序时,经常会遇到数据库操作中的字符编码问题,特别是当使用Hibernate框架与MySQL数据库结合时。本文将深入探讨“hibernate+mysql乱码问题”的原因、解决方案以及如何预防这类问题。 首先,...
在MySQL 5.6中遇到中文乱码问题,通常是由于字符集配置不正确导致的。字符集决定了数据库如何存储和显示非英文字符,尤其是对于中文这样的多字节字符集而言,正确的配置至关重要。以下是解决MySQL 5.6中文乱码问题的...
MySQL数据库在处理字符集时可能出现乱码问题,这通常是由于编码设置不一致或者不正确导致的。本篇文章将深入探讨MySQL乱码问题的原因,并提供一系列详细的解决方法。 1. **问题原因** - **编码不匹配**:数据库、...
乱码问题通常涉及到字符编码设置不一致,导致数据在存储或显示时出现问题。本文将深入探讨如何解决这个问题。 首先,我们要理解MySQL中涉及的几个关键字符集概念: 1. `character_set_client`:客户端发送SQL语句时...
在 MySQL 4.0 中,可以通过修改 MySQL 配置文件来解决中文乱码问题。具体来说,可以按照以下步骤进行操作: 1. 打开 MySQL 安装目录下的 my.ini 文件,並添加以下字段: default-character-set = utf8 2. 重新...
因此,在遇到乱码问题时,简单地将 UTF-8 修改为 GBK 并不能解决问题,反而可能造成更多的编码不一致问题。 #### 二、解决方案 解决 MySQL 中文乱码问题的方法主要有以下几种: 1. **在 JDBC 连接字符串中添加...
可以通过修改`my.cnf`或`my.ini`文件来更改服务器的字符集设置。 - **数据库表编码**:确保创建的所有表使用正确的字符集。可以在创建表时指定 `CHARACTER SET utf8` 或 `CHARACTER SET gbk` 来设置字符集。 2. ...
1. **客户端与服务器端编码不一致**:DELPHI客户端与MySQL服务器端的字符编码设置不一致是导致中文乱码的主要原因。 2. **数据库表的字符集设置**:如果MySQL数据库中的表字符集不是统一的UTF-8,那么在查询时就可能...
在使用 PHPmyadmin 导出 MySql 数据库时,经常会遇到中文乱码的问题,这是因为数据库的字符集编码问题。中文网站使用的字符集编码一般是 gb2312、gbk、utf8 等三种,而 PHPmyadmin 的默认字符集是 latin1_swedish_ci...
首先,我们需要修改 MySQL 数据库的编码方式,否则可能会出现乱码问题。我们可以通过以下命令来查看当前数据库的编码方式: ``` SHOW VARIABLES LIKE '%character%'; SHOW VARIABLES LIKE '%collation%'; ``` 这些...