教你解决往mysql数据库中存入汉字报错的方法

那么接下来我将为大家详细讲解“教你解决往MySQL数据库中存入汉字报错的方法”的完整攻略。

出现问题

在MySQL中,如果我们想要往表中插入含有汉字的数据,就会发现会提示错误Error:1366:“Incorrect string value: '\xF0\x9F\x98\x82\xE5\xA5\xBD...'”,如下所示:

mysql> insert into `table`(`column`) values('?你好');
ERROR 1366 (HY000): Incorrect string value: '\xF0\x9F\x98\x82\xE5\xA5\xBD...' for column 'column' at row 1

这是因为MySQL默认使用的字符集是latin1,所以在插入非latin1字符集时就会出现这个问题。

解决方法

因此,我们需要进行以下操作:

步骤一:修改MySQL的配置文件

打开MySQL的配置文件my.cnf,一般默认位置在/etc/mysql/my.cnf,如果找不到,则在系统中搜索my.cnf文件。

my.cnf文件中,找到[mysqld]这个标题,添加以下设置:

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

这样就将MySQL的默认字符集更改为utf8mb4了。

步骤二:重启MySQL服务

修改完成后,重启MySQL服务,使之生效。

# Ubuntu系统可以使用以下命令重启MySQL服务
sudo service mysql restart

# CentOS或RHEL系统可以使用以下命令重启MySQL服务
sudo systemctl restart mysqld

步骤三:修改表的字符集

如果已经有表了,需要将表的字符集也修改为utf8mb4,可以使用以下命令进行修改:

alter table `table` convert to character set utf8mb4 collate utf8mb4_unicode_ci;

或者在创建表时,也可以指定表的字符集:

create table `table` (
  `id` int unsigned not null auto_increment primary key,
  `column` varchar(255) not null
) engine=InnoDB default charset=utf8mb4;

示例说明

下面我们来看两条示例说明。

示例一

我们插入含有汉字的数据,如下所示:

mysql> insert into `table`(`column`) values('你好,MySQL!");
Query OK, 1 row affected (0.02 sec)

可以看到已经成功插入含有汉字的数据了。

示例二

如果我们使用utf8字符集,插入含有emoj表情的数据,会发现仍然会出现报错。

mysql> create table `emoji`(`id` int unsigned not null auto_increment primary key, `column` varchar(255) not null) engine=InnoDB default charset=utf8;
Query OK, 0 rows affected (0.10 sec)

mysql> insert into `emoji`(`column`) values('?MySQL!');
ERROR 1366 (HY000): Incorrect string value: '\xF0\x9F\x98\x82MyS...' for column 'column' at row 1

而如果我们将字符集改为utf8mb4,再插入同样的数据,就会发现插入成功了。

mysql> create table `emoji`(`id` int unsigned not null auto_increment primary key, `column` varchar(255) not null) engine=InnoDB default charset=utf8mb4;
Query OK, 0 rows affected (0.10 sec)

mysql> insert into `emoji`(`column`) values('?MySQL!');
Query OK, 1 row affected (0.02 sec)

总结

通过以上的解决方法,我们就可以往MySQL数据库中存入含有汉字、emoj表情等特殊字符的数据了。这个问题其实是因为选择的字符编码问题导致,在MySQL中使用utf8mb4字符编码就可以很好地解决这个问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:教你解决往mysql数据库中存入汉字报错的方法 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • 命令行运行Python脚本时传入参数的三种方式详解

    下面是“命令行运行Python脚本时传入参数的三种方式详解”的攻略。 命令行传参的三种方式 Python脚本中的参数可以通过命令行进行传递,共有3种方式: 简单传参方式 使用argparse库解析参数 使用click库解析参数 接下来分别详细讲解一下这三种方式。 简单传参方式 关键词:sys.argv 这种方式非常简单,直接在命令行中传递参数,然后在Pyth…

    python 2023年5月18日
    00
  • python进阶教程之函数参数的多种传递方法

    Python进阶教程之函数参数的多种传递方法攻略 Python中的函数参数传递方式有多种,下面将对这些传递方式进行详细讲解。 1. 位置参数传递 位置参数是最常见的一种参数传递方式,当我们调用函数时,传递的实参会按顺序一一对应函数定义时的形参,如下所示: def print_info(name, age, gender): print("Name:…

    python 2023年6月5日
    00
  • Python中的列表知识点汇总

    以下是详细讲解“Python中的列表知识点汇总”的完整攻略。 在Python中,列表是一种非常常用的数据类型,它可以存储多个元素,并且支持各种操作。本文将介绍中列表的知识点,包括创建列表、访问列表元素、添加和删除元素、列表切片、列表排序等。 创建列表 在中可以使用方括号[]或list()函数来创建一个列表。例如: lst1 = [1, 2, 3, 4, 5]…

    python 2023年5月13日
    00
  • 在 Python 中并行处理 AWS S3 数据

    【问题标题】:Parallel Processing AWS S3 Data in Python在 Python 中并行处理 AWS S3 数据 【发布时间】:2023-04-07 19:42:01 【问题描述】: 我有一个文件列表,我需要通过 lambda 函数从 S3 存储桶访问和处理这些文件,我的想法是遍历每个文件并从所有文件中并行收集数据。我的第一个…

    Python开发 2023年4月8日
    00
  • Python中模拟enum枚举类型的5种方法分享

    下面是对“Python中模拟enum枚举类型的5种方法分享”的详细讲解。 一、背景 在 Python 中,没有真正的枚举类型,但是有时候我们需要使用枚举来表示一些状态。例如,在一个电商网站中,我们定义了一个订单类,它可能有几种不同的状态(待发货、已发货、已签收等等),这些状态可以使用枚举来表示。 二、方法分享 1. 使用类实现 通过定义类来实现模拟枚举类型,…

    python 2023年6月3日
    00
  • Python “手绘风格”数据可视化方法实例汇总

    Python “手绘风格”数据可视化方法实例汇总 1. 简介 本文将介绍如何使用 Python 生成“手绘风格”的数据可视化图表。手绘风格的图表一般具有与众不同的美感和艺术感,能够更好地吸引读者的注意力和解释数据。本文将分别从以下两个方面进行阐述。 2. 手绘风格的定义 手绘风格是指利用绘画技巧和精细的处理来模拟手工制作的风格,将绘制出的图表呈现出类似手工制…

    python 2023年6月6日
    00
  • python计算程序开始到程序结束的运行时间和程序运行的CPU时间

    要计算Python程序的运行时间,可以使用Python的内置时间模块time。具体步骤可以分为以下几步: 在代码的开始处,记录程序开始时间,例如使用time.time()函数: import time start_time = time.time() # 程序正式开始,写下需要计时的代码 在代码的结束处,记录程序结束时间,并计算程序的运行时间(单位为秒): …

    python 2023年6月2日
    00
  • python+selenium识别验证码并登录的示例代码

    使用 Python 和 Selenium 实现识别验证码并登录可以分为以下几个步骤: 使用 Selenium 打开登录页面,并获取验证码图片的 URL。 使用 Python 的 requests 库下载验证码图片,并使用第三方库(如 pytesseract)识别验证码。 将识别结果填入验证码输入框,并填写其他登录信息。 点击登录按钮,完成登录操作。 以下是两…

    python 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部