一尘不染

不正确的字符串值:“ \ xF0 \ x9F \ x8E \ xB6 \ xF0 \ x9F…” MySQL

mysql

我正在尝试在我的MYSQL表中存储一条推文。的鸣叫是:

quiero que me escuches,no te burles no te rias,anoche tuve unsueñoque te
fuiste de mi vida🎶🎶

最后两个字符均为‘MULTIPLE MUSICAL NOTES’(U +
1F3B6)
,其UTF-8编码为0xf09f8eb6

tweet_text我表格中的字段编码为utf8mb4。但是,当我尝试在该列中存储推文时,出现以下错误消息:

字符串值不正确:第1行的’tweet_text’列的’\ xF0 \ x9F \ x8E \ xB6 \ xF0 \ x9F …’

怎么了?我怎样才能解决这个问题?我还需要存储多种语言,并且此字符集适用于所有语言,但不适用于表情符号和表情符号等特殊字符。

这是我的创建表语句:

CREATE TABLE `twitter_status_data` (
  `unique_status_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `metadata_result_type` text CHARACTER SET utf8,
  `created_at` text CHARACTER SET utf8 NOT NULL COMMENT 'UTC time when this Tweet was    created.',
  `id` bigint(20) unsigned NOT NULL COMMENT 'Unique tweet identifier',
  `id_str` text CHARACTER SET utf8 NOT NULL,
  `tweet_text` text COMMENT 'Actual UTF-8 text',
  `user_id_str` text CHARACTER SET utf8,
  `user_name` text COMMENT 'User''s name',
  `user_screen_name` text COMMENT 'Twitter handle',
  `coordinates` text CHARACTER SET utf8,
  PRIMARY KEY (`unique_status_id`),
  KEY `user_id_index` (`user_id`),
  FULLTEXT KEY `tweet_text_index` (`tweet_text`)
) ENGINE=InnoDB AUTO_INCREMENT=82451 DEFAULT CHARSET=utf8mb4;

阅读 964

收藏
2020-05-17

共1个答案

一尘不染

我终于能够找出问题所在。我必须在mysql配置my.ini中更改一些设置。本文对很多帮助
http://mathiasbynens.be/notes/mysql-utf8mb4#character-
sets

首先,我将my.ini中的字符集更改为utf8mb4,然后在mysql客户端中运行了以下命令

SET NAMES utf8mb4; 
ALTER DATABASE dreams_twitter CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;

使用以下命令检查所做的更改

SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
2020-05-17