在mysql下建了个表,建表时没太注意编码问题。
默认的应该是latin1,我在latin1下面插入在一些中文数据,在mysql的控制台下没问题
但是用jsp连接取出来是乱码。
方法1:set names utf8,在mysql控制台显示是乱码,前台取出来是乱码,set name latin1,mysql控制台中文,前台乱码
插入中文数据,提示,数据太长。
方法2:alter table table_name modify columns text character set utf8;
全部乱码;插入中文数据,提示,数据太长。
方法3:修改my.ini里的default-character-set=utf8,乱码;
插入中文数据,提示,数据太长。
方法4:在mysql的bin下面MySQLInstanceConfig里置成utf8,乱码,无果。
插入中文数据,还未试。。
我个人觉得我输入的数据以latin1的编码方法编码,要转码,用方法1转码转出来却是乱码,于是用方法2进行每字段转码,还是乱码,烦燥,用方法3改my.ini,继续乱码,发狂。继续在MySQLInstanceConfig重新设置,还是乱码,遂崩溃矣~~~
默认的应该是latin1,我在latin1下面插入在一些中文数据,在mysql的控制台下没问题
但是用jsp连接取出来是乱码。
方法1:set names utf8,在mysql控制台显示是乱码,前台取出来是乱码,set name latin1,mysql控制台中文,前台乱码
插入中文数据,提示,数据太长。
方法2:alter table table_name modify columns text character set utf8;
全部乱码;插入中文数据,提示,数据太长。
方法3:修改my.ini里的default-character-set=utf8,乱码;
插入中文数据,提示,数据太长。
方法4:在mysql的bin下面MySQLInstanceConfig里置成utf8,乱码,无果。
插入中文数据,还未试。。
我个人觉得我输入的数据以latin1的编码方法编码,要转码,用方法1转码转出来却是乱码,于是用方法2进行每字段转码,还是乱码,烦燥,用方法3改my.ini,继续乱码,发狂。继续在MySQLInstanceConfig重新设置,还是乱码,遂崩溃矣~~~
在新的字符集下建表、插入记录
这样你数据库中也是latin1, JSP告诉MYSQL用的也是LATIN1,MYSQL就会做自动转换了。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
还没用连接呢,在mysql里的问题还没解决呢。
show variables like 'char%';
贴结果
show create table xxx ;
show variables like 'char%'; 信息以供别人分析。
| Variable_name | Value
|
+--------------------------+----------------------------------------------------
-----+
| character_set_client | utf8
|
| character_set_connection | utf8
|
| character_set_database | utf8
|
| character_set_results | utf8
|
| character_set_server | utf8
|
| character_set_system | utf8
|
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.0\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
7 rows in set (0.00 sec)
你可以导出表数据,在新的字符集下重新导入记录 试试
----------------------------------------------------+
| blogs | CREATE TABLE `blogs` (
`blogid` int(10) NOT NULL auto_increment,
`title` text,
`pubtime` int(11) default NULL,
`authorid` int(8) default NULL,
`replies` int(8) default NULL,
`views` int(8) default NULL,
`preporty` int(1) default NULL,
`category` int(3) default NULL,
`sticky` int(1) default NULL,
`content` mediumtext NOT NULL,
`weather` tinytext NOT NULL,
PRIMARY KEY (`blogid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
show variables like'coll%';mysql> show variables like'coll%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)
select * from table;----+---------+
| blogid | title | pubtime | authorid | replies |
views | preporty | category | sticky | content
| weather |
+--------+------------------------------------+----------+----------+---------+-
------+----------+----------+--------+------------------------------------------
----+---------+
| 2 | 今天的天气很不错也,咿呀咿呀哟喂! | 2009
1125 | 1 | 2 | 20 | 1 | 1 | 1 | 我今天上班的
时候真是超无聊啊,改了半天的东西 | 雨
|
| 3 | this is a text test! | 20091126 | 3 | 6 |
5 | 4 | 8 | 6 | dlskaf;lks;lak;ldska;ldf
| fdsfds |
| 4 | 测试 | 20081126 | 2 |
4 | 9 | 8 | 4 | 9 | 也不知道行不行呢
| 晴 |
| 5 | 一个小小的测试 | 20091129 | 3 |
5 | 4 | 8 | 6 | 9 | 这次是修改了default后的测试哦。
! | 晴 |
+--------+------------------------------------+----------+----------+---------+-
------+----------+----------+--------+------------------------------------------
----+---------+
4 rows in set (0.00 sec)
下一步是确认你表中存放的到底是什么字符集.select left(title,4), hex(title) from xxx
看一下内容。或者不想仔细研究的话,你可以直接
select * from xx INTO OUTFILE 'xxx.txt'
然后再
set names 'gb2312'; 或者 set names 'gbk';
再把xxx.txt中的内容 再插入进去
数据非法,用图片吧。我汗啊。。
在latin1里面是这样存的啊。。