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

yizhihongxing

那么接下来我将为大家详细讲解“教你解决往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日

相关文章

  • pip报错“ImportError: cannot import name ‘main’ from ‘pip._internal.cli.base_command’ (/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py)”怎么处理?

    原因 “ImportError: cannot import name ‘main’ from ‘pip._internal.cli.base_command’ (/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py)” 错误通常是以下原因引起的: pip 版本过低:如果您的 pip…

    python 2023年5月4日
    00
  • Python探索之爬取电商售卖信息代码示例

    我会为你详细讲解“Python探索之爬取电商售卖信息代码示例”的完整攻略。 一、前置知识 在开始学习“Python探索之爬取电商售卖信息代码示例”之前,我们需要掌握以下知识: Python基础语法,包括数据类型、控制语句、函数、模块、异常处理等。 HTTP协议基础知识,了解HTTP请求响应的基本流程,掌握常见的HTTP请求方法和状态码。 网页结构基础知识,包…

    python 2023年5月14日
    00
  • python三引号如何输入

    当我们需要在Python中输入长字符串或者多行字符串时,可以使用Python的三引号(双引号或单引号)语法。通常我们可以使用以下方式来输入: my_string = "This is a long string that spans across multiple lines, and I need to use \n to break it in…

    python 2023年5月18日
    00
  • python 巡检脚本的项目实践

    下面是关于“python 巡检脚本的项目实践”的完整攻略: Python 巡检脚本的项目实践 什么是巡检脚本? 巡检脚本是一种自动化脚本,它可以定期查询不同系统和服务器上的状态,并与预定义的标准进行比较。巡检脚本是 IT 负责人在生产环境下对整个网络设施进行监控、检测和管理的一种工具。 巡检脚本项目的目的是通过可定制的方法收集、分析并报告网络设备和服务器的状…

    python 2023年6月2日
    00
  • python爬取微信公众号文章的方法

    Python爬取微信公众号文章是一个非常有用的应用场景,可以帮助我们在Python中获取微信公众号文章的文本数据。本攻略将介绍Python爬取微信公众号文章的完整攻略,包括数据获取、数据处理、数据存储和示例。 步骤1:获取数据 在Python中,我们可以使用requests库获取网页数据。以下是获取微信公众号文章页面的示例: import requests …

    python 2023年5月15日
    00
  • Python3使用requests模块实现显示下载进度的方法详解

    在Python中,requests是一个常用的HTTP客户端库,可以用于发送HTTP请求和处理HTTP响应。在下载大文件时,可以使用requests库实现显示下载进度的功能。以下是详细讲解Python3使用requests模块实现显示下载进度的方法的攻略,包含两个例。 使用tqdm库实现显示下载进度 tqdm是一个Python进度条库,可以用于显示进度条和估…

    python 2023年5月15日
    00
  • 用python进行视频剪辑

    用 Python 进行视频剪辑的完整攻略 介绍 很多人在创作视频时都需要进行剪辑,例如删减无用镜头、调整视频长度等等。这些任务通常需要使用视频编辑软件,例如Adobe Premiere和Final Cut Pro等。然而,如果你想批量剪辑大量视频,或者想用编程方式剪辑视频,Python将为你提供方便的解决方案。 在本文中,我们将介绍如何使用Python进行视…

    python 2023年6月2日
    00
  • 搞懂Python正则表达式,这一篇就够了

    本文代码基于Python3.11解释器,除了第一次示例,代码将省略 import re 这个语句 所有示例代码均可以在我的github仓库中的 code.py文件内查看 [我的仓库](PythonLearinig/正则表达式 at main · saopigqwq233/PythonLearinig (github.com)) 搞清楚Python正则表达式语…

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