mysql乱码问题
解决MySql数据乱码:
1 写过滤器设置编码格式(格式和JSP页面的编码一样),或则在请求里面写request.setCharacterEncoding("编码方式");
2 如果是查询出数据乱码,在链接的URL上加上编码格式(你这里加了,没问题);
3 修改my.ini文件里面的 default-character-set= 您要的编码格式 (一共有两处,你查找一下 改为一样的编码格式)
3 如果是写入到数据库之后是乱码(前提是已经写了过滤器处理编码),修改my.ini文件里面查找sql-mode 设置 sql-mode =
"NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
试试吧!
这是所有乱码的情况! 我用的是MYSQL5.0 解决乱码就这样搞的!!!!!!!
数据库编码采用UTF8,同样,修改连接字符串为:jdbc:mysql://localhost:3306/BookDB?useUnicode=true&characterEncoding=utf8
将你的default-character-set=latin1 改成default-character-set=gbk试试.
在安装的时候选择GBK就可以.或者在MY.INI里面改也可以.
写过滤器设置编码格式。
或者是把从数据库中读出的字符先转成byte数组,在编码成utf-8,保证解决问题
解决方法:
所有的编码都使用一种如:utf8
1.数据库编码:
String dbUrl = "jdbc:mysql://localhost:3306/BookDB&useUnicode=true&characterEncoding=utf8";
2.jsp编码
<%@ page language="java" contentType="text/html; charset=utf8"%>
3.增加记录的都转换为utf8编码如下:
content = new String(content.getBytes("iso8859-1"),"utf8"));
许多字符串数据类型的列定义可以包括指定字符集的CHARACTER SET属性,也可能包括校对规则。(CHARSET是CHARACTER SET的一个同义词)。这些属性适用于CHAR、VARCHAR、TEXT类型、ENUM和SET。例如:
· CREATE TABLE t
· (
· c1 CHAR(20) CHARACTER SET utf8,
· c2 CHAR(20) CHARACTER SET latin1 COLLATE latin1_bin
· );
该表定义创建了一个名为c1的列,具有一个utf8字符集和该字符集的默认 校对规则,和一个名为c2的列以及latin1字符集和该字符集的二元 校对规则。二元校对规则对大小写不敏感。
· MySQL 5.1用字符单位解释在字符列定义中的长度规范。(以前的一些MySQL版本以字节解释长度)。
· 对于CHAR、VARCHAR和TEXT类型,BINARY属性可以为列分配该列字符集的 校对规则。
· 字符列的排序和比较基于分配给列的字符集。在以前的版本中,排序和比较基于服务器字符集的校对规则。对于CHAR和VARCHAR 列,你可以用BINARY属性声明列让排序和 校对规则使用当前的字符代码值而不是词汇顺序。
CREATE TABLE t
· (
· c1 CHAR(20),
· c2 CHAR(20)
· );ss
如果用这个绝对会出现乱码问题!!
CREATE TABLE ceshi
(
id int not null primary key auto_increment,
name CHAR(200) CHARACTER SET utf8,
cometime date default '2008-6-7',
describ varchar(4000) CHARACTER SET utf8
);