mysql中文乱码问题!

zgycsmb 2009-03-03 10:49:03
我用的是hobernate3.0 + mysql 4.1
保存DB用的是
getHibernateTemplate().save(news);来保存的,(其它文字没问题,就中文有问题)
news 是个基类,
save 前, System.out.print(news.getTitle()) 可输出页面上传过来的中文,
可save后,
可进入 mysql 查看就是? ,再到数据显示页面中看也是 ?

java 文件用的都是utf-8,jsp文件用的是gbk,mysql CHARSET=gbk,mysql根目录中的my.ini 也是gbk.

大家帮我看看,这中文的问题怎么处理,谢谢!

...全文
446 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fulianglove 2009-03-03
  • 打赏
  • 举报
回复
1,项目的编码
2,页面(如JSP)的编码
3,MySQL的表都有编码的配置


===============================
以上全部统一
lily_lele 2009-03-03
  • 打赏
  • 举报
回复
修改mysql的默认字符集是通过修改它的配置文件来实现的


windows下的mysql配置文件是my.ini,一般在安装目录下(如C:\Program Files\MySQL\MySQL Server 5.0),可以直接在这个文件里面加上

default-character-set=gbk #或gb2312,big5,utf8
然后重新启动mysql

查看 MySQL 数据库服务器字符集,数据库字符集和客户端字符集

show variables like '%char%';

character_set_client,客户端字符集

character_set_database,数据库字符集

character_set_server,服务器字符集

2. 查看 MySQL 数据表(table) 的字符集

show table status from tablename like '%countries%';

3. 查看 MySQL 数据列(column)的字符集。

show full columns from tablename;

4. 查看当前安装的 MySQL 所支持的字符集。

show char set;

yy80680169 2009-03-03
  • 打赏
  • 举报
回复
1.创建数据库时启动mysql使用参数
mysql -uroot -p123456 --default-character-set utf8

2.创建数据库
create database xxx default character set utf8;
执行sal脚本
source /home/tarena/phone.sql

3.修改mysql 数据库连接url
jdbc:mysql://localhost:3306/phone?useUnicode=true&characterEncoding=utf8

4.提交时使用post提交
<form action="xxx.do" method="post">

5.使用过滤器filter
reqeust.setCharacterEncoding("utf8");

6.jsp页面设置字符集
<%@page contentType="text/html;charset=utf8" %>
rijiuyou01 2009-03-03
  • 打赏
  • 举报
回复
楼上方法改下应该就不会有问题了。
再不然重装mysql.不过注意一定要选字符集。你要是安装没记得选过GBK就是没选
zgycsmb 2009-03-03
  • 打赏
  • 举报
回复
我的mysql.ini 就是4楼那样设置的,
再帮我找找问题
gongyali2005 2009-03-03
  • 打赏
  • 举报
回复
找到MYSQL安装目录下的my.ini文件修改:


[client]

port=3306

[mysql]

default-character-set=gbk


# 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="C:/Program Files/MySQL/MySQL Server 5.0/"

#Path to the database root
datadir="C:/Program Files/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=gbk

# The default storage engine that will be used when create new tables when
default-storage-engine=INNODB
zgycsmb 2009-03-03
  • 打赏
  • 举报
回复
我试过楼上说的,
在mysql语句中执行 insert 中文,mysql会显示中文,
所以应该是hibernate save 时,没插中文,识别中文出错,
应该怎么办呢, 
lgq_0714 2009-03-03
  • 打赏
  • 举报
回复
顶一楼!!!!
Asinzy 2009-03-03
  • 打赏
  • 举报
回复
1、先确定数据里保存的是否是乱码:
mysql>select * from yourtable;
查看如果是乱码的话,就是你插入数据的时候,当前页面的编码方式和你mysql的编码方式不一致。
2、如果排除了以上乱码的可能,也就是说数据库中能正常保存中文,就需要检查你页面显示的编码方式了。

大致思路是这样的,你多多试验体会

81,094

社区成员

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

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