mysql5.0.7中文乱码_MySQL乱码实战解决ERROR 1366 (HY000): Incorrect string value

ERROR 1366 (HY000): Incorrect string value:

此种乱码解决方案如下:

首先,设置自己数据库的编码统一:

Connection

id: 81

Current database:

Current

user: root@localhost

SSL: Not in use

Using

delimiter: ;

Server

version: 5.0.67-community-nt MySQL Community Edition (GPL)

Protocol

version: 10

Connection: localhost via TCP/IP

Server

characterset: gbk

Db characterset: gbk

Client

characterset: gbk

Conn. characterset: gbk

TCP

port: 3306

随后到自己的表里面:

如我的这个表:content 表

+---------+-------------+------+-----+---------+----------------+

| Field |

Type | Null | Key | Default |

Extra |

+---------+-------------+------+-----+---------+----------------+

|

id |

int(11) | NO | PRI |

NULL |

auto_increment |

|

ad | smallint(6) | NO | |

0 | |

| title |

char(30) |

YES | | NULL | |

| author | varchar(30) | YES | | NULL | |

| content |

text | YES | | NULL | |

+---------+-------------+------+-----+---------+----------------+

mysql> insert into content(title,author,content)

values('插入成','修改于','文字符');

立刻报错:

ERROR 1366 (HY000): Incorrect string value:

'\xD0\xDE\xB8\xC4\xD3\xDA' for colum

n 'author' at row 1

mysql> insert into content(title,author,content)

values('插入成','修改于','文字

符');

ERROR 1366 (HY000): Incorrect string value:

'\xD0\xDE\xB8\xC4\xD3\xDA' for colum

n 'author' at row 1

想招吧,哎:以下是解决方案:

mysql> alter tablecontentmodifyauthor

varchar(30)character

setgbk;

对,就是这一句代码。很实用的,将表里面的所有列都进行一次这样的“洗礼”,大功告成!

----

不,还没完,页面需要声明用GBK或者GB2312编码,而且在页面需要进行转码:

String content1 = new

String(request.getParameter("content1").getBytes("ISO-8859-1"));

页面读取不需要转码,写入需要转码

----------------------------------------------------------------------------------------------------------------------------------------

将带有中文的数据插入通过java程序插入到表中,中文出现了乱码. 一开始以为是客户端连接时的字符编码不对.

1. 便将hibernate的datasource的URL改为如下:

?useUnicode=true&characterEncoding=gbk"

/>(红色部分为修改后代码.) . 修改后,执行添加操作, 中文还是变成了???.

2. 执行以上方之后发现报另一个错误: ERROR 1366 (HY000): Incorrect

string value: '/xE0/xFC/xB8/xS4/xG3/xDA' for colum

n 'province' at row 1

于是修改数据库的配置文件:

mysql安装目录下面的my.ini文件 : default-character-set=gbk

character-set-server=gbk

data/performance_schema目录下的:

db.opt文件: default-character-set=gbk

default-ollation=gbk_chinese_ci

修改完成之后重启MYSQL服务器. 但又出现了 ????

.

3. 方法二操作失败, 便认为是数据库本身字符编码设置的问题:

使用命令查看数据库的字符编码: mysql> show variables like 'char%';

+--------------------------+----------------------------------------------------

-----+

|

character_set_client | latin1

|

| character_set_connection | latin1

|

| character_set_database |

latin1

|

| character_set_filesystem | binary

|

|

character_set_results | latin1

|

|

character_set_server | latin1

|

|

character_set_system | utf8

|

|

character_sets_dir | D:/Program Files/MySQL/MySQL Server 5.5/share/chars

ets/ |

+--------------------------+----------------------------------------------------

-----+

发现数据库的编码为: latin1(MYSQL默认字符编码);

将MYSQL数据库同一设置成: gbk格式, 命令如下:

MYSQL>set character_set_client = 'gbk' ;

MYSQL>set character_set_connection = 'gbk' ;

MYSQL>set character_set_results= 'gbk' ;

MYSQL>set character_set_server= 'gbk' ;

完成之后,执行mysql> show variables like 'char%';

+--------------------------+----------------------------------------------------

-----+

|

Variable_name | Value

|

+--------------------------+----------------------------------------------------

-----+

|

character_set_client | gbk

|

| character_set_connection | gbk

|

| character_set_database |

gbk

|

| character_set_filesystem | binary

|

|

character_set_results | gbk

|

|

character_set_server | gbk

|

|

character_set_system | utf8

|

|

character_sets_dir | D:/Program Files/MySQL/MySQL Server 5.5/share/chars

ets/ |

然后修改对应的数据表的字符编码: alter

table map_datamodifyprovincevarchar(32)character

setgbk;

完成以上步骤之后.终于OK啦.

总结以上步骤:

1.设置客户端地连接编码格式. (命令: set names 'gbk')

2. 修改数据库的配置文件

3. 使用命令统一一下数据库的字符编码.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值