jsp MySql中文乱码 还需要哪里设置?
我是在jspMySQL中统一字符集utf-8不过jsp页面提交存到数据库是显示乱码jsp页面读取又显示正常网上看了好多资料可能还哪里没设置统一字符集希望大家帮帮忙看看下面...
我是在jsp MySQL 中统一字符集 utf-8
不过jsp页面提交 存到数据库是显示乱码 jsp页面读取又显示正常
网上看了好多资料 可能还哪里没设置统一字符集 希望大家帮帮忙看看
下面我的设置:
1、jsp页面中设置 <%@ page language="java" pageEncoding="UTF-8"%> 通过post表单提交请求 输入2汉字
通过HttpLook user_name=%E4%B8%AD%E6%96%87&user_pass=%E4%B9%B1%E7%A0%81
2、 <!-- 设置字符集过滤器 --> 拦截所有请求,
<filter>
<filter-name>SetCharacterEncodingFilter </filter-name>
<filter-class>
cn.qbd.filter.SetCharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding </param-name>
<param-value>utf-8 </param-value>
</init-param>
</filter>
3、链接数据库时候
jdbc:mysql://localhost:3306/wapdb?useUnicode=true&characterEncoding=utf8
4、设置了mysql中的默认字符集
show variables like'character_set_%';
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 C:\\Program Files\\MySQL\\MySQL Server 5.1\\share\\charsets\\
show variables like '%collation%';
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server utf8_general_ci
5、创建表的语句
create table t_user(
user_id int(4) not null auto_increment,
user_name varchar(20) not null,
user_pass varchar(20) not null,
grade varchar(10) not null,
email varchar(50) not null,
answer varchar(50) not null,
question varchar(50) not null,
user_state int(4) not null default '0',
user_creattime date not null,
primary key(user_id)
);engine=myisam default charset=utf8;
补充下 插入的汉字为“中文” 显示不是问号 而是 这个 涓枃 展开
不过jsp页面提交 存到数据库是显示乱码 jsp页面读取又显示正常
网上看了好多资料 可能还哪里没设置统一字符集 希望大家帮帮忙看看
下面我的设置:
1、jsp页面中设置 <%@ page language="java" pageEncoding="UTF-8"%> 通过post表单提交请求 输入2汉字
通过HttpLook user_name=%E4%B8%AD%E6%96%87&user_pass=%E4%B9%B1%E7%A0%81
2、 <!-- 设置字符集过滤器 --> 拦截所有请求,
<filter>
<filter-name>SetCharacterEncodingFilter </filter-name>
<filter-class>
cn.qbd.filter.SetCharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding </param-name>
<param-value>utf-8 </param-value>
</init-param>
</filter>
3、链接数据库时候
jdbc:mysql://localhost:3306/wapdb?useUnicode=true&characterEncoding=utf8
4、设置了mysql中的默认字符集
show variables like'character_set_%';
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 C:\\Program Files\\MySQL\\MySQL Server 5.1\\share\\charsets\\
show variables like '%collation%';
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server utf8_general_ci
5、创建表的语句
create table t_user(
user_id int(4) not null auto_increment,
user_name varchar(20) not null,
user_pass varchar(20) not null,
grade varchar(10) not null,
email varchar(50) not null,
answer varchar(50) not null,
question varchar(50) not null,
user_state int(4) not null default '0',
user_creattime date not null,
primary key(user_id)
);engine=myisam default charset=utf8;
补充下 插入的汉字为“中文” 显示不是问号 而是 这个 涓枃 展开
3个回答
展开全部
如果java的过滤器没写错的话,就在mysql下查下字符编码:
mysql> SHOW VARIABLES LIKE 'character_set_%';
mysql> SHOW VARIABLES LIKE 'collation_%';
默认就是瑞典latin1,一下是换成我们自己的编码,如utf8:
外部访问数据乱码的问题就出在这个connection连接层上,解决方法是在发送查询前执行一下下面这句: SET NAMES 'utf8';
如果在没有修改成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> SHOW VARIABLES LIKE 'character_set_%';
mysql> SHOW VARIABLES LIKE 'collation_%';
默认就是瑞典latin1,一下是换成我们自己的编码,如utf8:
外部访问数据乱码的问题就出在这个connection连接层上,解决方法是在发送查询前执行一下下面这句: SET NAMES 'utf8';
如果在没有修改成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;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询