java中文乱码问题: 执行sql存入mysql数据库 中文变为乱码 求解

ouwaner 2008-06-13 10:14:34
1 jdbc连接
设置了characterencoding为UTF-8
jdbc.mysql.url=jdbc:mysql://localhost:3306/weboa?useUnicode=true&characterEncoding=UTF8

2 页面
<%@ include file="../commons/jsp/header.jsp" %>
而header.jsp里加入了
<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
在页面里,点右键,查看编码方式为UTF-8

3 ACTION
保存在对象的属性里,调试的时候,可以看到正确显示

4 使用p6spy查看sql语句为
update projects set PROJECT_NAME='搞笑不', PROJECT_STATUS='', REQUESTOR_CATEGORY='', REQUESTOR_CATEGORY_ID='AS', REQUESTOR_USER_NAME='', REQUESTOR_USER_ID=1, PROJECT_START_DATE=NULL, PROJECT_NOTE='', PRIORITY='0', SERIAID=1 where ID='20080610001'
在EMS SQL Manager里执行数据库正确显示...................

5 数据库
mysql的DDL:
ENGINE=InnoDB DEFAULT CHARSET=utf8;

一切都看起来正确,但就是从页面update进入action(正确),程序操作,存入mysql就是"???".
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
求解..............................................................................
...全文
903 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ouwaner 2008-06-13
  • 打赏
  • 举报
回复
结贴了. 谢谢 yourtangtang.
我使用MySQL Server Instance Config Wizard 重新配置,在设置Configure the MySQL Server 5.0 server instance那里的时候选择Manual Selected Default Character Set / Collation 为 UTF8 而不是默认的 LATIN1

在MYSQL里查看得
mysql> \s;
--------------
E:\MySQL\MySQL Server 5.0\bin\mysql.exe Ver 14.12 Distrib 5.0.51a, for Win32 (ia32)

Connection id: 2
Current database:
Current user: root@localhost
SSL: Not in use
Using delimiter: ;
Server version: 5.0.51a-community-nt MySQL Community Edition (GPL)
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8

TCP port: 3306
Uptime: 25 sec

Threads: 1 Questions: 4 Slow queries: 0 Opens: 12 Flush tables: 1 Open tables: 6 Queries per second avg: 0.160


其中my.ini文件内容为
[mysql]

default-character-set=utf8


# SERVER SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this
# file.
#
[mysqld]

# The TCP/IP Port the MySQL Server will listen on
port=3306


#Path to installation directory. All paths are usually resolved relative to this.
basedir="E:/MySQL/MySQL Server 5.0/"

#Path to the database root
datadir="E:/MySQL/MySQL Server 5.0/Data/"

# The default character set that will be used when a new schema or table is
# created and no character set is defined
default-character-set=utf8

...........
jyq0105 2008-06-13
  • 打赏
  • 举报
回复
在action 中加上request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
ouwaner 2008-06-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yourtangtang 的回复:]
mysql安装的时候默认的字符集是拉丁文,要改一下的。。重装mysql试试
[/Quote]

谢谢,我试一下.
ouwaner 2008-06-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 TRMeister 的回复:]
从数据库中取出来,在页面显示正常么?
[/Quote]

直接在数据库里query到就是???
也就是说保存在mysql里就已经是???了
mengshan1986 2008-06-13
  • 打赏
  • 举报
回复
try{
byte[] bytes =(lf.getUsername()).getBytes("拉丁编码");
username=new String(bytes,"UTF-8");
System.out.print("用户名12"+username+"#");}
catch(Exception e){
System.out.print("用户名2"+username);

}
使用这个试试
TRMeister 2008-06-13
  • 打赏
  • 举报
回复
从数据库中取出来,在页面显示正常么?
yourtangtang 2008-06-13
  • 打赏
  • 举报
回复
mysql安装的时候默认的字符集是拉丁文,要改一下的。。重装mysql试试
lisl2003 2008-06-13
  • 打赏
  • 举报
回复
标记
ouwaner 2008-06-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 TRMeister 的回复:]
看看mysql中,你所用到的表和字段都是什么编码的?是utf-8么?
[/Quote]

5 数据库
mysql的DDL:
ENGINE=InnoDB DEFAULT CHARSET=utf8;
ouwaner 2008-06-13
  • 打赏
  • 举报
回复
应该跟eclipse的编码没有关系?
我的eclipse里查看页面的Info为Default (inherited from container :GBK)
zhj92lxs 2008-06-13
  • 打赏
  • 举报
回复
常见问题,csdn上有很多帖子
TRMeister 2008-06-13
  • 打赏
  • 举报
回复
看看mysql中,你所用到的表和字段都是什么编码的?是utf-8么?
老实的老陈 2008-06-13
  • 打赏
  • 举报
回复
你的开发环境是是什么,是eclipse吗,eclipse的编码是什么

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧