SSH+MYSQL乱码问题

本文详细介绍了如何解决MySQL数据库中的编码问题,包括配置web应用的JDBC连接、设置页面编码、调整web.xml中的过滤器参数以及确保数据库配置正确等方面的内容。

自己看吧我是看了无数的帖子才把我的整好的。希望没有下次了

编码问题:

web的jdbc配置问题:
url=jdbc:mysql://[ip]:[port]/[db]?

useUnicode=true&characterEncoding=gb2312

页面的编码设置:
<%@ page contentType="text/html;

charset=gb2312"%>


web.xml中过滤器的编码设置问题:
 <filter>
  <filter-

name>encodingFilter</filter-name>
  <filter-class>
   

org.springframework.web.filter.CharacterEncodingF

ilter
  </filter-class>
  <init-param>
   <param-

name>encoding</param-name>
   <param-

value>gb2312</param-value>
  </init-param>
  <init-param>
   <param-

name>forceEncoding</param-name>
   <param-value>true</param

-value>
  </init-param>
 </filter>
 <filter>

 <filter-mapping>
  <filter-

name>encodingFilter</filter-name>
  <url-pattern>*.jsp</url-pattern>
 </filter-mapping>

最后还要保证数据库的配置正确:

查看系统的字符集和排序方式的设定可以通过下面的两

条命令:
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)


SET NAMES 'gb2312';

它相当于下面的三句指令:
SET character_set_client = gb2312;
SET character_set_results = gb2312;
SET character_set_connection = gb2312;

不过这样改的好像是当前与服务器的连接的编码,关掉与

server的连接再新开一连接还是latin1,要改掉服务器

的配置就需要先shutdown了MySQL,然后
修改
1:/etc/my.cnf文件(LINUX),改成这样:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
default-character-set=gb2312(如果没有这行,手动加

上,因为没有的话意思是默认使用latin1)


2:windows:C:/Program Files/MySQL/MySQL Server

5.0/my.ini

[client]
port=3306
[mysql]
default-character-set=gb2312

[mysqld]
# The TCP/IP Port the MySQL Server will listen on
port=3306
default-character-set=gb2312

net stop mysql
net start mysql

启动以后再看就是


mysql> show variables like 'chara%';
+--------------------------+--------------------

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

--------------------------------
-----+
| character_set_client     | gb2312
     |
| character_set_connection | gb2312
     |
| character_set_database   | gb2312
     |
| character_set_filesystem | binary
     |
| character_set_results    | gb2312
     |
| character_set_server     | gb2312
     |
| character_set_system     | utf8
     |
| character_sets_dir       | C:/Program

Files/MySQL/MySQL Server 5.0/share/chars
ets/ |
+--------------------------+--------------------

--------------------------------
-----+

从前到后所有的都配好了应该就ok了,反正我的现在是

ok了
要是想用utf-8什么的也要保证前后都一致,可以去试下

 


评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值