mysql——1366error:Incorrect string value: ‘\xE7\x8E\x9E\x97‘ for column

本文详细解析了MySQL中因使用latin1字符集导致无法插入中文的问题,提供了修改字符集的具体步骤,包括数据库、表及字段级别的编码调整,确保中文数据的正确存储。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、已建立的表无法插入中文字符串,原因是因为数据表中的内容为latin1字符集,latin1字符集为8bit,这说明它是不能表示中文的,故而当然会报改错

2、下面是具体问题,如果不修改name的字符集latin1,插入中文给name时,将会报错 Incorrect string value: '\xE7\x8E\x8B\xE6\x9E\x97' 

3、一些关于查看和修改字符集的mysql知识:

查看mysql的字符集:show variables where Variable_name like '%char%';

查看某一个数据库字符集:show create database enterprises;(注:enterprises为数据库)

查看某一个数据表字符集:show create table employees;(注:employees为数据表)

修改mysql的字符集:

              mysql> set character_set_client=utf8;

              mysql> set character_set_connection=utf8;

              mysql> set character_set_database=utf8;

              mysql> set character_set_results=utf8;

              mysql> set character_set_server=utf8;

              mysql> set character_set_system=utf8;

              mysql> set collation_connection=utf8;

              mysql> set collation_database=utf8;

              mysql> set collation_server=utf8;

修改数据库enterprises的字符集:
alter database enterprises character set utf8

修改数据表employees的字符集:

alter table employees character set utf8

修改字段的字符集

alter table employees change name name char(10) character set utf-8;

 

4.常见的更改数据库编码集的方法:

 ①进入mysql安装目录,打开my.ini文件,修改其中内容,然后重启MySQL服务。具体步骤不述

②运行show variables like  ' character%'; 显示的内容是: 

+--------------------------+-----------------------------------+ 
| Variable_name            | Value                             | 
+--------------------------+-----------------------------------+ 
| character_set_client     | gbk                               | 
| character_set_connection | gbk                               | 
| character_set_database   | latin1                            |         //此处显示数据库依然是latin1编码 
| character_set_filesystem | binary                            | 
| character_set_results    | gbk                               | 
| character_set_server     | gbk                               | 
| character_set_system     | utf8                              |             // 此处是系统默认的 
| character_sets_dir       | E:\phpStudy\MySQL\share\charsets\ | 
+--------------------------+-----------------------------------+ 


③修改默认编码有两种方法  

1》在创建数据库时指定字符集create database yourDB CHARACTER SET gbk; 

 如果是MYSQL数据库编码不正确: 可以在MYSQL执行如下命令: ALTER DATABASE `test` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci 
 修改MYSQL表的编码:ALTER TABLE `category` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci 
 修改字段的编码:ALTER TABLE `test` CHANGE `dd`  VARCHAR(  45 ) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL 

2》我是用的这种方法,因为我电脑上配置了php环境所以可以用这种方法:即运行一个php文件通过那个修改数据编码。你通过网页浏览该文件时填写一些数据就能修改了     文件下载地址http: // dl.vmall.com/c08ge26aop                   文件直接解压到放php文件目录通过浏览器打开就行 

通过上面这些步骤差不多就能显示出下面的内容了 

在运行命令show variables like  ' character% ';    


+--------------------------+-----------------------------------+ 
| 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       | E:\phpStudy\MySQL\share\charsets\ | 
+--------------------------+-----------------------------------+ 

④万一还是不行。。。以为我也是一路试着来的,所以有些步骤可能我认为没起作用但却可能起了作用的有 

1》mysql>  set names gbk; 

Query OK,  0 rows affected ( 0.00 sec) 
它相当于下面的三句指令: 
SET character_set_client = gbk;
SET character_set_results = gbk;
SET character_set_connection = gbk;
 
因此,这个方法也可以解决所有字符编码设置为gbk,而控制台显示中文乱码的问题。 

⑤当然你也可以试试SET character_set_client = gbk;  即set这种命令来修改各个变量,但当时我不知道这个,也没试过。如果你上面的方法不行可以试试这个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值