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
               );


posted on 2008-05-02 22:00  小顾问  阅读(1555)  评论(0编辑  收藏  举报