我导入别人Java项目,shiro.ini配置文件件里的中文都是 \u开头的怎么办?

Java连接MySQL中文乱码处理&character_set_server永久设置
Java连接MySQL中文乱码处理
14:54& 杨志伟&
CSDN& 我要评论(0)
本文将为大家讲解如何处理Java连接过程中的MySQL中文乱码问题。一般MySQL中文乱码问题都是与字符集有关,这里作者的经历也大致差不多。
MySQL默认编码是latin1
1. mysql& show variables like
'character%';&
+--------------------------+--------------------------+&
Variable_name&&&&&&&&&&&
Value&&&&&&&&&&&&&&&&&&&
+--------------------------+--------------------------+&
character_set_client&&&&
latin1&&&&&&&&&&&&&&&&&&
6. | character_set_connection |
latin1&&&&&&&&&&&&&&&&&&
7. | character_set_database&& |
latin1&&&&&&&&&&&&&&&&&&
8. | character_set_filesystem |
binary&&&&&&&&&&&&&&&&&&
character_set_results&&&
latin1&&&&&&&&&&&&&&&&&&
character_set_server&&&&
latin1&&&&&&&&&&&&&&&&&&
character_set_system&&&&
utf8&&&&&&&&&&&&&&&&&&&&
character_sets_dir&&&&&&
| D:\MySQL\share\charsets\ |&
+--------------------------+--------------------------+&
14. 创建数据表并插入数据&
15. mysql&&
16. mysql& create table messages
-& id int(4) unsigned auto_increment primary
-& message varchar(50) not null
-& ) engine=myisam default
charset=utf8;&
20. mysql& insert into messages (message) values
("测试MySQL中文显示");&
21. mysql& select * from
22. +----+-------------------+&
23. | id |
message&&&&&&&&&&
24. +----+-------------------+&
25. |& 1 | 测试MySQL中文显示 |&
26. +----+-------------------+&
27. 编写程序(Java)&
28. import java.sql.C&
29. import java.sql.DriverM&
30. import java.sql.ResultS&
31. import java.sql.S&
32. public class JDBCTest {&
public static void main(String[] args) {&
34.&&&&&&&&
String driver = "com.mysql.jdbc.Driver";&
35.&&&&&&&&
String url =
"jdbc:mysql://localhost:3306/test";&
36.&&&&&&&&
String user = "root";&
37.&&&&&&&&
String password = "root";&
38.&&&&&&&&
39.&&&&&&&&&&&&
Class.forName(driver);&
40.&&&&&&&&&&&&
Connection conn = DriverManager.getConnection(url, user,
password);&
41.&&&&&&&&&&&&
Statement stmt = conn.createStatement();&
42.&&&&&&&&&&&&
stmt.executeUpdate("insert into messages (message) values
('测试MySQL编码')");&
43.&&&&&&&&&&&&
ResultSet rs = stmt.executeQuery("select * from
messages");&
44.&&&&&&&&&&&&
while (rs.next()) {&
45.&&&&&&&&&&&&&&&&
int id = rs.getInt("id");&
46.&&&&&&&&&&&&&&&&
String message = rs.getString("message");&
47.&&&&&&&&&&&&&&&&
System.out.println(id + " " + message);&
48.&&&&&&&&&&&&
49.&&&&&&&&&&&&
rs.close();&
50.&&&&&&&&&&&&
stmt.close();&
51.&&&&&&&&&&&&
conn.close();&
52.&&&&&&&&
} catch (Exception e) {&
53.&&&&&&&&&&&&
e.printStackTrace();&
54.&&&&&&&&
57. 程序输出&
58. 1 ????MySQL????????&
59. 2 ??MySQL??
我们看到,尽管使用数据库时我们能够正常的添加和显示中文,但是在使用程序连接数据库时并不能够正常显示中文,为此我们需要修改MySQL的默认编码,编辑my.ini(MySQL配置文件)文件对编码进行修改
设置MySQL的默认字符集为utf8,找到客户端配置[client]在下面添加。
default-character-set=utf8
找到服务器配置[mysqld]在下面添加
default-character-set=utf8
设定MySQL数据库以utf8编码运行,连接MySQL数据库时使用utf8编码
停止和重新启动MySQL
net stop mysql
net start mysql
//实际中,最新mySQL以上两句已经失效,在命令行中先exit&&
然后重新登录可以实现这个目的
重新连接数据库,查看编码,数据表内容
1. mysql& show variables like
'character%';&
+--------------------------+--------------------------+&
Variable_name&&&&&&&&&&&
Value&&&&&&&&&&&&&&&&&&&
+--------------------------+--------------------------+&
character_set_client&&&&
utf8&&&&&&&&&&&&&&&&&&&&
6. | character_set_connection |
utf8&&&&&&&&&&&&&&&&&&&&
7. | character_set_database&& |
utf8&&&&&&&&&&&&&&&&&&&&
8. | character_set_filesystem |
binary&&&&&&&&&&&&&&&&&&
character_set_results&&&
utf8&&&&&&&&&&&&&&&&&&&&
character_set_server&&&&
utf8&&&&&&&&&&&&&&&&&&&&
character_set_system&&&&
utf8&&&&&&&&&&&&&&&&&&&&
|&&&&//该行未更改,建议使用替换,这样能改的全面
character_sets_dir&&&&&&
| D:\MySQL\share\charsets\ |&
+--------------------------+--------------------------+&
14. mysql&&
15. mysql& select * from
16. +----+-------------------------------+&
17. | id |
message&&&&&&&&&&&&&&&&&&&&&&
18. +----+-------------------------------+&
19. |& 1 |
虏芒脢脭MySQL脰脨脦脛脧脭脢戮&&&&&&&&&&&&
20. |& 2 |
??MySQL??&&&&&&&&&&&&&&&&&&&&
21. +----+-------------------------------+&
22. 这里显示依然是乱码主要是因为之前使用的编码不同造成的,重新运行之前写的程序:java
23. 1 ????MySQL????????&
24. 2 ??MySQL??&
25. 3 测试MySQL编码&
26. 从第三条记录我们可以看到现在程序连接数据库时可以正常的添加和显示中文了&//如果从MySQL
line中仍然查询不到数据,显示数据集为空,继续完成第三步使得系统的编码和mySQL的编码一致就可以查询出来了……&
27. mysql& select * from
28. +----+-------------------------------+&
29. | id |
message&&&&&&&&&&&&&&&&&&&&&&
30. +----+-------------------------------+&
31. |& 1 |
虏芒脢脭MySQL脰脨脦脛脧脭脢戮&&&&&&&&&&&&
32. |& 2 |
??MySQL??&&&&&&&&&&&&&&&&&&&&
33. |& 3 |
娴嬭瘯MySQL缂栫爜&&&&&&&&&&&&&&&&
34. +----+-------------------------------+
看回数据库的显示,我们会很奇怪的发现为什么显示的都是乱码,这主要是和windows下命令行的编码有关,在命令行上(命令提示符左上角图标处右键属性)查看属性-&选项的当前代码页:936&&
(ANSI/OEM - 简体中文 GBK)(本人机子上是这样显示的)
也就是说命令行上使用的是GBK编码,而我们是在程序连接时使用utf8进行添加的,所以会出现有乱码,现在我们将客户端的编码改成gb2312或gbk试一下
1. mysql& show variables like
'character%';&
+--------------------------+--------------------------+&
Variable_name&&&&&&&&&&&
Value&&&&&&&&&&&&&&&&&&&
+--------------------------+--------------------------+&
character_set_client&&&&
gb2312&&&&&&&&&&&&&&&&&&
6. | character_set_connection |
gb2312&&&&&&&&&&&&&&&&&&
7. | character_set_database&& |
utf8&&&&&&&&&&&&&&&&&&&&
8. | character_set_filesystem |
binary&&&&&&&&&&&&&&&&&&
character_set_results&&&
gb2312&&&&&&&&&&&&&&&&&&
character_set_server&&&&
utf8&&&&&&&&&&&&&&&&&&&&
|&//最后你会发现这个还是没有更改,见下文
character_set_system&&&&
utf8&&&&&&&&&&&&&&&&&&&&
character_sets_dir&&&&&&
| D:\MySQL\share\charsets\ |&
+--------------------------+--------------------------+&
14. mysql&&
15. mysql& select * from
16. +----+-------------------+&
17. | id |
message&&&&&&&&&&
18. +----+-------------------+&
19. |& 1 | ????MySQL????????
20. |& 2 |
??MySQL??&&&&&&&&
21. |& 3 |
测试MySQL编码&&&&
22. +----+-------------------+
补充:更改character_set_server,在安装目录的bin文件夹下使用MySQLInstanceConfig.exe配置,在很多步骤中的一步(选择编码)选择第二项(使用UTF-8)或者第三项(自己设定)……更改完毕……
现在可以看到中文正常显示了(主要是因为utf8也支持中文),所以当我们使用命令行工具连接数据库的时候最好将客户端的编码改一下,如果使用GUI的话就不必了,同时修改客户端的编码之后程序依然能够正常显示(以上两点已经测试)
所以如果在程序中要显示中文的话我们可以选用utf8,gb2312,gbk这三种编码,但是如果想在命令行添加中文数据或者查看的话就需要将客户端的编码设置为gb2312或gbk了,还是那句,CMD的编码有关
注意如下:
遇到一个奇怪的mysql乱码问题,我的mysql全部已经设置成了utf-8,sql-front中文显示也是正常的,通过程序或者是FRONT都能够查找中文,就单单再mysql中是乱码。
mysql& SHOW VARIABLES LIKE
'character_set_%';&&
-----------------------------+
Variable_name&&&&&&&&&&&
Value&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
+--------------------------+-------------------------------------------+
character_set_client&&&&
utf8&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&& | character_set_connection
character_set_database&&
&& | character_set_filesystem |
binary&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
character_set_results&&&
character_set_server&&&&
character_set_system&&&&
utf8&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
character_sets_dir&&&&&&
| C:\MySQL\MySQL Server 5.0\share\charsets\ |
+--------------------------+-------------------------------------------+
&& 8 rows in set (0.06
sec)看似都正常但是在mysql中执行select出来的中文都是乱码,sql-front正常。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
自己结贴,字符就算都转成了UTF8但是控制台的字符好像一定要GBK,不知道什么原因我所有字符都是UTF8的但是要想不是乱码一定要在控制台中输入set
这样就不乱了,说实话很茫然。
mysql命令行下:
安装时是UTF8,my.ini下也改了。可使用show variables like
'character\_set\_%';查看时,发现
character_set_database=labins,character_set_server=labins
查看字符集&&show&variables&like&'character\_set\_%';
修改字符集&set&character_set_client=utf8;
MySQL字符集修改命令&
1.修改服务器级&a.&临时更改:&mysql&SET&GLOBAL&character_set_server=utf8;&b.&永久更改:shell&vi&/f[mysqld]default-character-set=utf8&
2.修改数据库级&a.&临时更改:&mysql&SET&GLOBAL&character_set_database=utf8;&b.&永久更改:改了服务器级就可以了
3.修改表级&mysql&ALTER&TABLE&table_name&DEFAULT&CHARSET&utf8;&更改了后永久生效&
4.修改列级修改示例:&mysql&ALTER&TABLE&`products`&CHANGE&`products_model`&`products_model`&VARCHAR(&20&)&CHARACTER&SET&utf8&COLLATE&utf8_general_ci&NULL&DEFAULT&NULL;&更改了后永久生效&5.更改连接字符集&a.&临时更改:mysql&&SET&NAMES&utf8;b.&永久更改:&shell&vi&/f在[client]中增加:default-character-set=utf8&
查看和改变mysql的编码方式(转发)
在mysql中查看编码方式show variables like
'character%';
mysql& show
variables like 'character%';
+--------------------------+----------------------------------------------------
-----------+
Variable_name&&&&&&&&&&&
&&&&&&&&&&
+--------------------------+----------------------------------------------------
-----------+
character_set_client&&&&
客户端编码方式
&&&&&&&&&&
| character_set_connection |
utf8&&&&建立连接使用的编码方式
&&&&&&&&&&
| character_set_database&& |
数据库的编码方式
&&&&&&&&&&
| character_set_filesystem | binary
&&&&&&&&&&
character_set_results&&&
utf8&&&&结果集的编码方式
&&&&&&&&&&
character_set_server&&&&
数据库服务器的编码方式
&&&&&&&&&&
character_set_system&&&&
&&&&&&&&&&
character_sets_dir&&&&&&
| D:\Program Files (x86)\MySQL\MySQL Server 5.1\share
\charsets\ |
+--------------------------+----------------------------------------------------
-----------+
8 rows in set (0.00 sec)
系统下,修改MySQL数据库默认编码的步骤为:
停止MySQL的运行
/etc/init.d/mysql start
(stop)&为启动和停止服务器
MySQL主配置文件为my.cnf,一般目录为/etc/mysql
var/lib/mysql/&放置的是数据库表文件夹,这里的mysql相当于windows下mysql的date文件夹
当我们需要修改MySQL数据库的默认编码时,需要编辑my.cnf文件进行编码修改,在linux下修改mysql的配置文件my.cnf,文件位置默认/f文件&
找到客户端配置[client]&在下面添加&
default-character-set=utf8&默认字符集为utf8&
在找到[mysqld]&添加&
default-character-set=utf8&默认字符集为utf8&
init_connect='SET NAMES
utf8'&(设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)&
修改好后,重新启动mysql&即可,重新查询数据库编码可发现编码方式的改变:
&show variables like
'character%';&
+--------------------------+----------------------------+&
| 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 | /usr/share/mysql/charsets/
+--------------------------+----------------------------+&
此方法用于标准mysql版本同样有效,对于/f文件,需要从mysql/support-files的文件夹cp
3、windows系统下可以删除MySQL数据库,并重新安装,在安装过程中可以直接用Mysql
Server Instance Config
Wizard&进行设置
4、当MySQL数据库服务器已经有数据不适合删除重装时,可以个别指定数据库的编码方式。MySQL指定编码的方式是非常灵活并多样化的,可以指定表级别的编码,行级别编码,甚至可以指定字段级别的编码。
以下示例给出创建数据库时指定编码的两种方式:
1)CREATE DATABASE
ms_db CHARACTER SET utf8 COLLATE utf8_general_ci;
2)create database if
not exists netctoss default character set utf8;
5、如果你采用的是外部接入的方式,可以在连接中确定请求的编码格式如:jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=utf-8(注意:不要出现任何空格,否则出错)
6、执行脚本:指定编码格式set
names gbk(注意,不是UTF-8)可以修改
从执行命令前后可知,set names gbk只可以修改character_set_client、character_set_connection、character_set_results的编码方式,并且这种修改是窗口级别的,只针对本窗口有效,打开另外一个窗口修改无效。也可发现数据库底层的编码方式没有改变,插入数据后还是以utf8编码方式保持。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。jetty鍚?姩浠ュ強宓屽叆寮忓惎鍔}

我要回帖

更多关于 java读取ini配置文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信