`

MySQL中文乱码

 
阅读更多
背景:
从另外一台机子上用 Navicat 导出 mysql 版本是5.01.41-community 数据库为ibank.sql文件。

1.在我的win7 64bit mysql-4.01.41-community上用 navicat 导入成功。
问题:java的后台获取到的是乱码。显示到前台页面乱码。mysql查出来的是乱码。navicat里面是OK的,有中文显示.
连接属性:

2.在我的win7 64bit mysql-4.01.41-community上用
mysql -u root -p ibank<F:\ibank.sql
导入成功。

问题:java的后台获取到的是中文。显示到前台页面中文。mysql查出来的是乱码。navicat里面是乱码.用MySQL WorkBench显示到的是中文。

INSERT INTO sys_user(id,createTime,updateTime,version,bz,email,lastvisit,mobile,password,realname,sfsc,username,sfqy,type)
VALUES ('21', '2013-10-05 09:27:54', '2013-10-05 09:27:54', '1', ' fsdf ', 'liuhaihui1988824@163.com', null, '13600332958',
'e10adc3949ba59abbe56e057f20f883e', '刘海辉', null, 'woodpecker', '0', 'COMMONUSER');

成功插入。



正确的操作步骤:

1.安装数据库的时候指定:utf8
2.建表的时候用utf8
DROP TABLE IF EXISTS sys_user;
CREATE TABLE sys_user (
  id bigint(20) NOT NULL AUTO_INCREMENT,
  createTime datetime NOT NULL,
  updateTime datetime NOT NULL,
  version int(11) NOT NULL,
  bz varchar(150) DEFAULT NULL,
  email varchar(50) DEFAULT NULL,
  lastvisit varchar(20) DEFAULT NULL,
  mobile varchar(20) DEFAULT NULL,
  password varchar(255) NOT NULL,
  realname varchar(255) NOT NULL,
  sfsc int(11) DEFAULT NULL,
  username varchar(255) NOT NULL,
  sfqy int(11) DEFAULT NULL,
  type varchar(255) DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8;

3.navicat 新建连接的时候指定 utf8
4.导入数据库的时候指定 utf8 和 utf8-generate-ci




常用的mysql乱码修改编码语句:

set character_set_client = gbk;
set character_set_results = gbk;
set character_set_connection = gbk;
set character_set_server = gbk;

set character_set_client = gb2312;
set character_set_results = gb2312;
set character_set_connection = gb2312;
set character_set_server = gb2312;
set character_set_system = gb2312;

set character_set_client = utf8;
set character_set_results = utf8;
set character_set_connection = utf8;
set character_set_server = utf8;


set character_set_client = latin1;
set character_set_results = latin1;
set character_set_connection = latin1; 
set character_set_server = latin1;
set character_set_database = latin1;

show variables like 'character_set_%';



drop database ibank;
CREATE DATABASE ibank DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;


--这个是把数据库的数据导出到.sql文件
mysql -u root -p ibank>F:\project\ibank\ibank_v2.sql

--这个是把.sql文件的数据导入到数据库
mysql -u root -p ibank<F:\project\ibank\ibank_v2.sql

mysql -u root -p

select realname from sys_user;

C:\Program Files (x86)\MySQL\MySQL Server 5.1\bin


ALTER DATABASE ibank DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
--ALTER DATABASE ibank DEFAULT CHARACTER SET gb2312 COLLATE gb2312_chinese_ci;




小Tips:

mysql> show create database ibank;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    2
Current database: ibank

+----------+----------------------------------------------------------------+
| Database | Create Database                                                |
+----------+----------------------------------------------------------------+
| ibank    | CREATE DATABASE `ibank` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+----------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select realname from sys_user;
+-----------------+
| realname        |
+-----------------+
| 绯荤粺绠$悊鍛?     |
| 灏忓己            |
| 鏉庢槑            |
| 鐜嬬惣            |
| 钄℃槑鍠?         |
| 鍗″崱            |
| 钃濆ぉ            |
| 鍗″崱            |
| 鏉庡姞            |
| 鏄傛槀            |
| 鏄傛槀            |
| 鐜嬬惣鐞?         |
| 鍛ㄤ笟鎴?         |
+-----------------+
13 rows in set (0.08 sec)

mysql> exit;
Bye

C:\Users\Administrator>net stop mysql
MySQL 服务正在停止..
MySQL 服务已成功停止。


C:\Users\Administrator>net start mysql
MySQL 服务正在启动 .
MySQL 服务已经启动成功。


C:\Users\Administrator>mysql -u root -p
Enter password: ***
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 6.0.11-alpha-community MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use ibank;
Database changed
mysql> select realname from sys_user;
+------------+
| realname   |
+------------+
| 系统管理员 |
| 小强       |
| 李明       |
| 王琼       |
| 蔡明喜     |
| 卡卡       |
| 蓝天       |
| 卡卡       |
| 李加       |
| 昂昂       |
| 昂昂       |
| 王琼琼     |
| 周业成     |
+------------+
13 rows in set (0.09 sec)

mysql>



这里是因为我用MySQL Server Instance Config Wizard 将编码设置为gb2312的原因。





<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd ">

    <persistence-unit name="AppProductPersistenceUnit" transaction-type="RESOURCE_LOCAL">
    	<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<properties>
   			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
   			<property name="hibernate.connection.driver_class"  value="com.mysql.jdbc.Driver"/>
   			<property name="hibernate.connection.username" value="root" />
				<property name="hibernate.connection.password" value="123" />
				<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/ibank?useUnicode=true&amp;characterEncoding=UTF-8"/>
				<property name="hibernate.hbm2ddl.auto" value="update" />
				<property name="hibernate.show_sql" value="true" />
				<property name="hibernate.format_sql" value="true" />
		</properties>
    </persistence-unit>
</persistence>



### \u5f00\u53d1\u73af\u5883\u6570\u636e\u914d\u7f6e
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ibank?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=123

### \u6570\u636e\u5e93\u8fde\u63a5\u6c60\u7684\u6700\u5c0f\u8fde\u63a5\u6570\u91cf\u3001\u6700\u5927\u8fde\u63a5\u6570\u91cf\u3001\u521d\u59cb\u8fde\u63a5\u6c60\u5927\u5c0f
jdbc.minPoolSize=1
jdbc.maxPoolSize=3
jdbc.initialPoolSize=2

### \u8fde\u63a5\u7684\u6700\u5927\u7a7a\u95f2\u65f6\u95f4\uff08\u5355\u4f4d\u79d2\uff0c0\u8868\u793a\u6c38\u4e0d\u4e22\u5f03\uff09\u3001\u8fde\u63a5\u8017\u5c3d\u65f6\u4e00\u6b21\u83b7\u53d6\u7684\u8fde\u63a5\u6570\u91cf
jdbc.maxIdleTime=0
jdbc.acquireIncrement=1

  • 大小: 56.4 KB
分享到:
评论

相关推荐

    mysql中文乱码问题

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

    解决连接mysql中文显示乱码

    以下是对如何解决连接MySQL时中文显示乱码问题的详细解析。 ### 解决中文显示乱码的关键知识点 #### 1. **理解字符集和编码** 字符集(Character Set)是指用于表示文字的一系列符号集合,而编码(Encoding)则是将...

    java插入mysql中文乱码解决

    ### Java插入MySQL中文乱码解决 #### 一、问题背景 在使用Java应用程序与MySQL数据库交互的过程中,常常会遇到一个令人头疼的问题:中文字符在存储到数据库时出现乱码现象。这种现象通常发生在使用JDBC(Java ...

    Delphi2010解决ZEOSDBO-7.1.3a控件调用mysql中文乱码

    Delphi2010解决ZEOSDBO-7.1.3a控件调用mysql中文乱码 ZConnection1.Database:=_Database1; ZConnection1.Port:=_Port; ZConnection1.User:=_User; ZConnection1.Password:=_Password; ZConnection1.HostName:=_...

    PHP+MySql中文乱码解决方案

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

    jsp+mysql中文乱码解决方案集合

    ### jsp+mysql中文乱码解决方案集合 在使用JSP结合MySQL进行Web应用开发时,中文乱码问题一直是困扰开发者的一大难题。本文将详细介绍如何在MySQL数据库层面解决中文乱码问题,并提供一系列实用的方法和技巧。 ###...

    MySQL中文乱码问题解决方案

    ### MySQL中文乱码问题解决方案 在使用MySQL的过程中,中文乱码问题是常见的问题之一,尤其是在数据库初始设置不当时,更容易出现此类问题。本文将详细介绍如何彻底解决MySQL中的中文乱码问题。 #### 一、理解中文...

    PHP+MySql中文乱码解决办法

    ### PHP+MySQL中文乱码解决办法详解 #### 一、乱码产生的原因 在使用PHP+MySQL进行开发的过程中,中文乱码问题是常见的一个问题。乱码现象通常发生在从数据库查询中文数据时,显示出来的中文变成了不可识别的符号...

    Mysql 中文乱码 最简单的解决办法

    总结,解决MySQL中文乱码问题的关键在于确保服务器、数据库、表及字段的字符集设置一致,并与数据源保持匹配。在开发和维护过程中,关注字符集的统一性,可以避免很多不必要的编码问题。通过上述步骤,你应该能够...

    mysql汉字乱码问题

    5. **客户端配置**:确保连接MySQL的客户端工具(如MySQL Workbench, Navicat等)也使用正确的字符集。这通常在连接设置中进行。 6. **数据导入导出**:在导入或导出数据时,务必确保文件和数据库之间字符集的一致...

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

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

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

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

    jsq+mybatis+mysql中文乱码解决方案

    JSQ+MyBatis+MySQL 中文乱码解决方案 中文乱码是 JSQ、MyBatis 和 MySQL 集成时常见的问题,解决这个问题需要从多方面入手。本文将从 JSP、MyBatis 和 MySQL 三个方面来解决中文乱码问题。 JSP 中文乱码解决方案 ...

    Mysql中文乱码问题解决方案

    本文将深入探讨MySQL中文乱码问题的原因、解决方法,以及如何在创建数据库和表时避免这类问题。 首先,我们要了解字符集的概念。字符集(Character Set)是计算机系统用来表示文本的一系列符号和编码,例如ASCII、...

    解决 docker mysql 中文乱码问题

    使用 docker 启动 mysql 容器可能会出现中文乱码的情况,这里记录如何制作支持中文的 mysql 镜像 docker版本:18.06 mysql 版本:5.7 1. 创建 my.cnf 文件 [client] default-character-set=utf8 [mysql] default-...

    mysql中文乱码的解决方法

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

    java中MySQL中文乱码问题解决方案

    Java 中 MySQL 中文乱码问题解决方案 Java 中 MySQL 中文乱码问题是数据库开发中常见的问题之一,解决这个问题需要对数据库、JSP 和 Tomcat 进行相应的设置。下面我们将详细介绍解决该问题的方案。 数据库编码修改...

Global site tag (gtag.js) - Google Analytics