一些数据库解决方案

中文乱码问题:
1)原因:数据库的编码与读取时的编码不一致;jsp页面的显示保存编码与读取到的编码不一致;数据库的编码不统一,尤其是数据库的server

2)解决方法:
<1>连接mysql数据库的驱动url改为:jdbc:mysql://localhost:3306/lj?useUnicode=true&characterEncoding=utf-8
<2>mysql数据库编码设为同一的utf-8:
set character_set_filesystem='utf8';
show variables like 'character_set_%';
<3>jsp文件的编码设为utf-8:
<%@page pageEncoding="utf-8"%>
<4>html文件内容的编码设为utf-8,注意是文件内容:

<5>所有的文件保存时使用utf-8编码格式保存

3)产生乱码的原理及解决办法:
<1>产生乱码是由于在某个环节的两端编码方式不一致或者终端(浏览器等)
不支持;另外也可能是tomcat服务器不稳定的问题,
如果是tomcat服务器产生的原因,则需要到tomcat服务器安装目录的bin文件夹下修改配置
<2>解决办法:
@ 从页面接受的数据使用编码进行重新编译,
(要注意gbk与utf8把中文当作几个字节来看),
如接受到数据后,在取出数据之前,需设置编码request.setCharacterEncoding(“utf-8”),在得到输出流out之前也要设置response.setCharacterEncoding(“utf-8”)
@ 向数据库中存储数据之前,先确保数据都使用了同一的编码(至少在插入数据的时候),
表、源文件都设置一下,全部使用同一的编码如utf-8,
以mysql为例:[create database xxx CHARACTER SET charset_name],然后查看是否所有的字符集都是同一种,
不是则单独设置(方法见上文)。
建表也许设置编码CREATE TABLE xxx () ENGINE=InnoDB AUTO_INCREMENT=198 DEFAULT CHARSET=utf8; 接下来执行sql脚本就行了。
@ 从数据库中取出数据后如果显示设备编码不一致也会乱码,如:终端。
4) 命令汇总:
windows的mysql终端编码格式gbk,只有插入的数据是gbk,数据库的编码格式是gbk时,在终端查询时中文才能正常显示。

查看状态:status 或者\s
查看字符编码:show variables like 'character_set_%
查看可用的字符集:show character set

停止mysql服务:net stop mysql
开始mysql服务:net start mysql

穿件数据库时指定编码create database dbname charater set utf8
如果数据库已经存在了:
解决办法:alter database dbname character set utf8

指定表的编码,默认与数据库编码一致:
create table t1(
id int(4)not null auto_increment,
name char(20)default null,
primary key("id")
)engine=InnoDB AUTO_INCREMENT=6 DRFAULT CHARSET=utf8


一种比较简单的修改方法:
<1> windows
1 中止musql服务
2 在mysql安装目录下找

到my,ini,如果没有就把my-medium.ini复制为一个my.ini即可。
3 打开my.ini以后,在[client]和[mysqld]下面均加上default-character-set=utf8,
保存并关闭
4 启动mysql服务。

<1>Linux
1 中止musql服务
2 在/etc/找到https://www.360docs.net/doc/344701700.html,f,如果没有就把mysql的安装目录下的supper-files目录下的
https://www.360docs.net/doc/344701700.html,f复制到/etc/下并改名为https://www.360docs.net/doc/344701700.html,f即可。
3 打开https://www.360docs.net/doc/344701700.html,f以后,在[client]和[mysqld]下面均加上default-character-set=utf8,
保存并关闭
4 启动mysql服务。


相关文档
最新文档