mysql5.0+myeclipse4.1+tomcat5.0 全部使用默认编码方式
1:插如数据到mysql中:
在页面上加入本页的编码方式
<%@ page contentType= "text/html;charset=gb2312 " %>
把你要插入的中文文字由gb2312转变为iso-8859
title = new String(title.getBytes( "GB2312 "), "ISO-8859-1 ");
***注意此页面千万别在数据库的URL后面加任何编码方式*****
conn = java.sql.DriverManager.getConnection ( "jdbc:mysql://localhost/zqswork ", "root ", "root ");
2:从mysql中读出数据到页面:
依然在页面上加如编码方式
<%@ page contentType= "text/html;charset=gb2312 " %>
把你要读出的中文由iso-8859转变为gb2312
<%username = new String(username.getBytes( "ISO-8859-1 "), "gb2312 ");%>
****注意此页面一定要在数据库url处加入编码方式(与上面相反)******
conn = java.sql.DriverManager.getConnection( "jdbc:mysql://localhost/zqswork?useUnicode=true&characterEncoding=gb2312 ", "root ", "root ");
这个问题请注意3点:
1。创建数据库的时候:CREATE DATABASE `database` CHARACTER SET 'utf8 ' COLLATE 'utf8_general_ci '; 2.建表的时候 CREATE TABLE `database_user` ( `ID` varchar(40) NOT NULL default ' ', `UserID` varchar(40) NOT NULL default ' ', ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 3.设置URL的时候 jdbc:mysql://localhost:3306/database?seUnicode=true&characterEncoding=UTF-8 这3个设置好了,基本就不会出问题了 |
把它改成GBK或者GB2312、uTF-8。
如果还不行的话,把你表的编码格式也改成上面的编码格式,我是两个都改了
就OK了!
要先用重启mysql
在命令提示符下用:
net stop mysql
net start mysql
没错 是编码的问题 很诡异 我一张表两个字段类型一样的 一个OK一个却data too long,后来我导出了SQL,改了一下
-- ----------------------------
-- Table structure for cities
-- ----------------------------
CREATE TABLE `cities` (
。。。。。。
。。。。。
) ENGINE=InnoDB DEFAULT CHARSET=utf8;//这改成UTF8就行了
本人也遇到这样的问题,花了好长时间解决的,总结了一下,希望对各位有用
mySql错误:Data truncation: Data too long for column :这个问题是字符集编码格式问题,修改mysql 安装文件下的my.ini 文件,[mysql] 下面default-character-set=UTF8 修改成utf-8或者gbk,此文件中还有一处要改的 # created and no character set is define 下面default-character-set=UTF8 然后在的data目录下找到相应数据库文件 找到db.opt 文件 default-character-set=UTF8 default-collation=UTF8_swedish_ci 这2行文字都要改,这些都改了要是还不行的话,再查看你表的编码和表中字段的编码格式:在表上点击右键——表讯息——DDL 可以看到表和字段的编码格式,要是跟你配置文件中的不一致的话修改就OK了,修改方法:在表上点击右键——设计表——选项——字符集 ,然后点击你表中的每个字符串字段,查看下面的字符集编码是否一致,所有工作都做了肯定就好了。
例如将所有的编码都设置成utf8,jsp的contentType= "text/html;charset=utf-8 "
修改数据库默认编码ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
修改表的编码:ALTER TABLE `category` DEFAULT ……
汉字乱码问题:
(1)修改 my.ini 设置default-character-set=gbk(注意,有2处)
(2)修改data目录中相应数据库目录下的db.opt配置文件 default-character-set=gbk default-collation=gbk_chinese_ci
(3) 生成库、表、字段时,不要隐含为 latin.
检查,如果是latin, 则要改为 gbk
这样在3个层次注意字符集的设置问题。应该没有问题了。
我遇到的问题是在程序中插入中文字符可以,但是在数据库中查看时,会不正常显示!
但是在mysql doc中使用sql插入中文就会报data too long的错误提示,我使用的是utf8编码!
在插入数据之前我把编码都统一了,都是utf8。
1.连接数据的url为
jdbc:mysql://127.0.0.1:3306/dbname?useUnicode=true&characterEncoding=utf8
2.安装mysql5.0时使用的是utf8编码格式
3.更改数据库中相应属性编码为utf8
先查看一下各个变量的编码:show variables like 'character_set_%';
通过该语句设置编码set names utf8;//这个基本会更改大部分,可能会剩下一个,那个无所谓!
但是,此时,如果在mysql doc中使用sql语句插入中文的话,还是会报data too long的错误,
这是因为在mysql的控制台属性中,默认代码页那项中有两种编码,一种是简体中文GBK,一种是
OEM美国,我们一般默认是GBk,所以这就造成了在doc下插入会报错!
我只能试着用程序插入数据了,不过我看你使用的是GBK,所以应该可以,你只需要把编码都统一一下,
除了上面的使用GBK外,在创建数据库,创建表的时候都加上编码,这样应该可以。
4.create database dbname default character set utf8;
5.create table tabname(.....) ENGINE=InnoDB default charset=utf8;
试一下吧,希望对你有用,我再看看,还有没有其他的办法!
:(1)修改 C:\Developer\MySQL5.0\my.ini(MySQL Server Instance Configuration 文件)
设置default-character-set=gbk(注意,有2处)
(2)修改data目录中相应数据库目录下的db.opt配置文件
default-character-set=gbk
default-collation=gbk_chinese_ci
重起mysql,就ok了.
其实最终还都是编码的问题,主要的问题出在以下几点:
1.数据库的编码格式
2.所用语言的编码格式
3.如果是网页提交或接收的编码格式
以上3点的编码格式都一致的情况下,就不会出现乱码了。