`
jinvasshole
  • 浏览: 784153 次
文章分类
社区版块
存档分类
最新评论

mysql中文问题全处理

 
阅读更多

1、在dos环境下,用mysql --default-character-set=gbk -u root -p 这句话进入mysql~~

2、建数据库、表,如下:

create database admin;

use admin;

CREATE TABLE admin (

admin_name char(20) NOT NULL,

admin_password char(20) NOT NULL

) TYPE=MyISAM,

default character set gbk;

  2, JDBC的设置问题:(这里主要讲的是mysql-connector-java-3.1.8这个JDBC驱动程序而言)

这只是一个压缩包,并不需要安装,只要将其解压,使用的是文件夹mysql-connector-java-3.1.8里的文件:mysql-connector-java-3.1.8-

bin.jar.

需要配置环境变量的是JDBC驱动.在配置前先要把刚才说到的

mysql-connector-java-3.1.8-bin.jar放到本地硬盘某处(我放的地方:E:/JAVA/MySQLJDBC),然后根据你放的地方,配置classpath,我的

配置是这样的:

  .;E:/Java/j2se5.0/lib/tools.jar; E:/Java/j2se5.0/lib/mysql-connector-java-3.1.8-bin-g.jar; E:/JAVA/MySQLJDBC/mysql-

connector-java-3.1.8-bin.jar

  配置这个的目的是让你的java应用程序找到连接mysql的驱动.

  配置完环境变量后还有很重要一步就是为JSP连接数据库配置驱动,这个其实很简单,就是把mysql-connector-java-3.1.8-bin.jar拷到某

些文件夹里就行了,我在网上看了很多资料问了很多人,各种说法都有,我综合了一下,为了保险,我都全做了,呵呵,反正就是拷一个400K

的文件而已,现列出要把mysql-connector-java-3.1.8-bin.jar拷进去的文件夹,如下:E:/Java/Tomcat5.0/common/lib

  E:/Java/Tomcat5.0/shared/lib

一般情况下只要考到Tomcat5.0上面的两个问题夹里面就可以解决问题了,如果需要,也可以将mysql-connector-java-3.1.8-bin.jar这个驱动

文件拷贝到你的WEB站点的 …/WEB-INF/lib 目录下面。

  3, Eclipse中数据库插件中操作数据库时的中文编码问题:

当在Eclipse中装上来你所喜欢的数据库插件的时候,都会出现在你查询某一个数据库之后出现记录中的汉字乱码。解决方法很简单,只要在你

建立数据库连接的时候把URL设置成下面这个样子就可以了:

URL= jdbc:mysql://localhost:3306/?useUnicode=true&characterEncoding=GBK

  4, 在JSP网页编辑中个人经验:在经过很多的次调试之后,发现在装了myeclipse之后,有这么条小巧:

①在用myeclipse编写HTML文件时charset=GBK设置成这个样子,那么在浏览器中浏览时就不会出现乱码; ②而在用myeclipse编辑JSP文件时,

<%@ page contentType="text/html;charset=GB2312" %>设置成这样子,且这条语句必须是整个JSP文件的第一条语句,就可以避免JSP文件在浏

览器中显示时出现乱码;

③对于如果在JSP网页中要从HTML页面中接收数据,那么在JSP中的接收语句的汉字编码应与数据来源的HTML的汉字编码相同;例如②中的HTML

的汉字编码为charset=GBK,那么在JSP中的接收语句就应该这样设置:request.setCharacterEncoding("GBK");如果还要将接受的数据插入到

数据库中(以插入MySQL5.0数据库为例),那么在插入数据库时的汉字编码也应与HTML文件中的汉字编码相同,我的设置如下:con=

DriverManager.getConnection("jdbc:mysql://localhost:3306/sample_db?

user=dazern&password=5201314&useUnicode=true&characterEncoding=GBK")这样设置后数据库中的数据才不会乱码.

以上经验都是在myeclipse3.8.3 Tomcat5.0.28中测试过,没有错误!在此仅供大家借三、数据库存取乱码

当然,在写数据库时,也要保正数据库的编码与其它一致:

我们可以在系统盘windows目录下的my.ini文件,在文件中插入一行default-character-set=GBK,但上面说了这么多,大家也应该明白些了吧,

改动太多的默认设置不是我的风格,因此上,这一行还是不要加的好。

但不管怎么样,我们还是要创建一个基于中文编码的数据库,当然,用客户端登录的时候,某些客户用自动把字体编码转换成中文编码。在这

里,我想说一下在DOS下创建中文编码数据库的方法:

在进入数据库的时候,用mysql --default-character-set=gbk -u root -p 这句话进入mysql,然后创建数据库,如:create database

admin;这样创建起来的数据库就是基于中文编码的了。

用连接数据库的时候,读出的数据也可能是乱码,解决这个问题的方法非常简单,只要在你建立数据库连接的时候把URL设置成下面这个样子就

可以了:URL= jdbc:mysql://localhost:3306/my_database?useUnicode=true&characterEncoding=GBK

好了,说了这么多,总结一句话结束吧,把各种地方的编码统一起来,那么,所在的乱码问题就都解决了!

鉴,具体情况还得具体分析!

文章整理:西部数码--专业提供域名注册、虚拟主机服务
-------------------
mysql中文乱码终结
2008-03-20 13:00
接下来就是创建数据库,名字为sample

然后建立一个table: employee,内容如下(其中应该是email,可是我不小心在建数据库打错了,将错就错了):
+-------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------+----------------+
| employee_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| last_name | varchar(20) | YES | | NULL | |
| first_name | varchar(20) | YES | | NULL | |
| birth | date | YES | | NULL | |
| sex | enum('m','f') | YES | | m | |
| emmail | varchar(39) | YES | | NULL | |
+-------------+------------------+------+-----+---------+----------------+

如果只是这样的话,就会出现这样的错误:报告的错误是:sqle=com.mysql.jdbc.MysqlDataTruncation:
Data truncation: Data too long
for column 'last_name' at row 1 从 employee!
有的情况是:| name |
+-------------+
| ?? |
| 54243654321 |
| ?? |
| ?? |
+-------------+出现问号!

前面我们已经说过了,mysql默认的编码是latin1,不是我们所需要的gbk,所以我们要修改成为utf8,因为若要正确显示中文繁、简、日文、韩

文 使用utf8,修改方法如下:
ALTER DATABASE sample ####这里修改整个数据库的编码
CHARACTER SET utf8
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
DEFAULT COLLATE utf8_general_ci;
当然了,你也可在在建数据库的时候指定编码,比如:

CREATE DATABASE sample

CHARACTER SET utf8
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci
DEFAULT COLLATE utf8_general_ci ;

接下来要做的是打开mysql所在的目录下的my.nin


在[mysqld]段加入一下代码改成:default-character-set=utf8 启动mysql,输入:执行下列语句,看看结果是不是下面的:mysql> show

variables like '%character%';+--------------------------+-------------------------------------------+| Variable_name

| Value |+--------------------------+-------------------------------------------+|

character_set_client | latin1 || character_set_connection | latin1

|| character_set_database | utf8 || character_set_results | latin1

|| character_set_server | utf8

| character_set_system | utf8 || character_sets_dir |

C:/MySQL/MySQL Server 5.0/share/charsets/ |+--------------------------+-------------------------------------------+mysql>

show variables like '%collation%';+----------------------+-------------------+| Variable_name | Value |+-

---------------------+-------------------+| collation_connection | latin1_swedish_ci || collation_database |

utf8_general_ci || collation_server | utf8_general_ci |+----------------------+-------------------+

接着你再看看执行那个Mysql.html 文件:这回你可以看到的是
mysql> select * from employee;
+-------------+-----------+------------+------------+------+--------------+
| employee_id | last_name | first_name | birth | sex | emmail |
+-------------+-----------+------------+------------+------+--------------+
| 12 | ? | ?? | 1978-12-11 | f | aaa@asdf.com |
| 13 | ? | ?? | 1978-12-11 | f | aaa@asdf.com |
| 14 | ? | ?? | 1978-12-11 | f | aaa@asdf.com |
| 15 | ? | ?? | 1978-12-11 | f | aaa@asdf.com |
| 16 | ? | ?? | 1978-12-11 | f | aaa@asdf.com |
| 17 | ? | ?? | 1978-12-11 | f | aaa@asdf.com |
+-------------+-----------+------------+------------+------+--------------+

这当然不是我们希望看到的,我们需要的现实完美正确的中文:
我们还有最后一招:
mysql> SET NAMES 'gbk' ;
Query OK, 0 rows affected (0.00 sec)
因为我们需要的是gbk.
看看mysql中的character设置情况:
mysql> SHOW VARIABLES LIKE '%character%' ;
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | utf8 |
| character_set_results | gbk |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:/MySQL/MySQL Server 5.0/share/charsets/ |
+--------------------------+-------------------------------------------+
7 rows in set (0.00 sec)

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

这个才是我们最终需要的。
在来查看执行完Mysql_jstl.jsp后的数据库中的结果:
mysql> select * from employee;
| 14 | 王 | 彭给 | 1978-12-11 | f | aaa@asdf.com |
| 15 | 田 | 王光 | 1978-12-11 | f | aaa@asdf.com |
| 16 | 息 | 存入 | 1978-12-11 | f | aaa@asdf.com |
| 17 | 往 | 小杯 | 1978-12-11 | f | aaa@asdf.com |
+-------------+-----------+------------+------------+------+--------------+

可以高兴得看到了中文,并且在浏览器中也显示正确。

但是仅仅这样的话,当你重新启动mysql的时候
所有的设置又失效了。
mysql> show variables like '%character%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:/MySQL/MySQL Server 5.0/share/charsets/ |
+--------------------------+-------------------------------------------+

mysql> SHOW VARIABLES LIKE '%collation%' ;
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-------------------+
重新读取又出现乱码:
mysql> select * from employee;
+-------------+-----------+------------+------------+--
| employee_id | last_name | first_name | birth | s
+-------------+-----------+------------+------------+--
| 12 | ? | ?? | 1978-12-11 | f
| 13 | ? | ?? | 1978-12-11 | f
| 14 | ? | ?? | 1978-12-11 | f
| 15 | ? | ?? | 1978-12-11 | f
| 16 | ? | ?? | 1978-12-11 | f
| 17 | ? | ?? | 1978-12-11 | f
+-------------+-----------+------------+------------+--
所以我们需要在客户端设置系统能识别中文的编码gbk并没有保存到my.ini文件中。所以要修改my.ini文件

在[mysql]段加入一下代码改成:default-character-set=gbk 这样设置就得到保存了。
重启就可以了。
mysql> show variables like '%character%';
+--------------------------+----------------
| Variable_name | Value+--------------------------
+----------------| character_set_client | gbk
| character_set_connection | gbk
| character_set_database | utf8
| character_set_results | gbk
| character_set_server | utf8
| character_set_system | utf8
| character_sets_dir | C:/MySQL/MySQL
+--------------------------+----------------
mysql> SHOW VARIABLES LIKE '%collation%' ;
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | gbk_chinese_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+

MySQL的默认编码是Latin1,不支持中文,那么如何修改MySQL的默认编码呢,下面以UTF-8为例来说明

需要注意的是,要修改的地方非常多,相应的修改方法也很多。下面是一种最简单最彻底的方法:

一、Windows
1、中止MySQL服务
2、在MySQL的安装目录下找到my.ini,如果没有就把my-medium.ini复制为一个my.ini即可
3、打开my.ini以后,在[client]和[mysqld]下面均加上default-character-set=utf8,保存并关闭
4、启动MySQL服务

二、Linux
1、中止MySQL服务(bin/mysqladmin -u root shutdown)
2、在/etc/下找到my.cnf,如果没有就把MySQL的安装目录下的support-files目录下的my-medium.cnf复制到/etc/下并改名为my.cnf即可
3、打开my.cnf以后,在[client]和[mysqld]下面均加上default-character-set=utf8,保存并关闭
4、启动MySQL服务(bin/mysqld_safe &)

非常简单,这样的修改一劳永逸,今后MySQL一切相关的默认编码均为UTF-8了,创建新表格的时候无需再次设置

需要注意的是,当前数据库中已经存在的数据仍保留现有的编码方式,因此需要自行转码,方法在网上有很多,不再赘述

<!-- -->
分享到:
评论

相关推荐

    mysql优化及中文处理

    优化MySQL数据库性能和处理中文字符集问题是数据库管理员和开发人员经常会遇到的任务。以下是对标题和描述中涉及知识点的详细说明: 1. **MySQL优化**: - **查询优化**:通过编写高效的SQL语句,减少全表扫描,...

    Mysql中文汉字转拼音的实现(每个汉字转换全拼)

    在MySQL中实现中文汉字转拼音的功能,主要是为了方便在数据库查询和数据分析时处理中文文本,尤其是在没有全文索引或者需要进行复杂模糊匹配时。以下是一个简单的实现方法,它利用自定义函数来完成这一任务。 首先...

    mysql 汉字拼音数据库.zip

    总之,MySQL汉字拼音数据库是处理中文信息不可或缺的工具,它能够为各种涉及到汉字处理的项目提供强大支持,提高开发效率和用户体验。通过有效的数据库设计和使用,我们可以充分利用这些数据,创造出更加智能和人性...

    mysql 5.7 中文文档

    文档详细解释了MySQL如何处理约束,这对于理解其行为模式很有帮助。此外,还列出了对MySQL做出贡献的人员、翻译团队、软件包、工具和支持者,展示了MySQL社区的广泛参与。 安装和升级部分是文档的重要组成部分,...

    mysql汉字乱码问题

    总之,解决MySQL中的汉字乱码问题需要从多个层面进行检查和调整,确保字符集在整个数据处理链路中的一致性。理解字符集和编码的概念,以及它们在MySQL中的应用,对于避免和解决这类问题至关重要。

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

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

    MySQL中文参考手册

    MySQL中文参考手册是一份详尽的数据库管理系统指南,专为使用MySQL进行数据存储、管理和查询的用户和开发者设计。MySQL是一种流行的开源关系型数据库管理系统的(RDBMS),它以其高效、稳定和易于扩展的特性而受到全球...

    MYSQL文档完美中文版

    MySQL处理约束的方式:讨论MySQL如何处理表约束,包括外键、主键等。 5. MySQL安装和配置 5.1. MySQL支持的操作系统:列举MySQL可以运行的操作系统平台。 5.2. 安装MySQL:介绍MySQL数据库的安装流程,包括获取...

    MYSQL中文显示乱码问题

    总之,解决MySQL中文乱码问题的关键在于确保所有环节的字符集设置一致且兼容中文。从数据库、表、连接到客户端工具,都需要仔细检查和调整,以确保正确处理中文字符。如果以上方法无效,可能需要检查更深层次的系统...

    Mysql 5.1 中文手册

    4. **存储引擎**:MySQL 5.1支持多种存储引擎,如InnoDB(事务处理)、MyISAM(非事务处理)和MEMORY(内存存储)。每种引擎都有其特性,手册会介绍它们的优缺点和适用场景。 5. **安全性**:这部分会讲解如何创建...

    PHP MYSQL 查询汉字jsonencode处理

    在PHP和MySQL的世界里,处理汉字显示问题是一个常见的挑战,特别是在数据交互和JSON编码过程中。本文将深入探讨如何使用`json_encode`函数解决PHP从MySQL查询后汉字显示异常的问题。 首先,我们需要理解PHP的`json_...

    MySQL官方中文文档

    官方中文文档是学习和掌握MySQL技术的重要资源,提供了全面的指南、参考手册以及最佳实践。 《MySQL官方中文文档》包含了以下几个主要部分: 1. **安装与升级**:这部分详述了在各种操作系统环境下安装MySQL的步骤...

    高性能的MySQL中文版

    《高性能的MySQL中文版》这本书深入探讨了MySQL数据库在高性能场景下的优化策略和技术,是数据库管理员、开发人员和系统架构师的重要参考资料。书中的内容涵盖了MySQL的各个方面,旨在帮助读者理解如何最大化数据库...

    C++操作MariaDB和MySql中文乱码或无法处理中文的解决办法

    C++操作MariaDB和MySql中文乱码或无法处理中文的解决办法 在使用C++操作MariaDB和MySQL数据库时,中文乱码或无法处理中文是一个常见的问题。本文将介绍如何解决这个问题,确保C++程序正确地处理中文。 解决方法 ...

    MySQL 5.7 中文文档

    MySQL 5.7是MySQL数据库管理系统的一个重要版本,它提供了许多增强的功能和性能优化,使得这个开源关系型数据库系统在处理大数据和复杂查询时更为高效。以下是对MySQL 5.7的一些关键知识点的详细说明: 1. **InnoDB...

    mysql中文手册(完整版).rar

    这份MySQL中文手册的完整版,将这些内容都进行了详细的中文翻译,使得国内用户在使用过程中能更轻松地理解和解决问题,不必依赖英文资料,提升了学习和工作效率。无论是初学者还是经验丰富的开发者,都能从中受益。...

    mysql中文使用手册

    ### MySQL中文使用手册知识点概览 #### 1. MySQL 的基本信息 **1.1 什么是 MySQL?** - MySQL 是一款关系型数据库管理系统(RDBMS),由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。 - 主要用于存储、检索数据...

    MySQL中文参考手册CHM版

    MySQL中文参考手册CHM版包含了丰富的关于MySQL数据库的知识,它是一个强大的开源关系型数据库管理系统,广泛应用于各种规模的企业和项目中。手册详细介绍了MySQL的安装、配置、使用以及管理等各个方面,是学习和工作...

    mysql与JDBC中文问题的解决方法

    MySQL与JDBC在处理中文字符时可能会遇到一些问题,主要是由于编码设置不一致导致的。本文将详细介绍两种解决MySQL与JDBC中文问题的方法。 首先,我们需要理解MySQL和Java之间的编码问题。MySQL数据库支持多种字符集...

    mysql-5.7操作手册(中文版).pdf

    MySQL 5.7 操作手册中文版 MySQL 5.7 是一个功能强大且广泛使用的关系数据库管理系统。该手册提供了 MySQL 5.7 的详细使用指南,涵盖了安装、配置、管理、优化等方面的内容。 安装和升级 MySQL MySQL 5.7 提供了...

Global site tag (gtag.js) - Google Analytics