我试图使用UTF-8并遇到麻烦.
我尝试了很多东西; 这是我得到的结果:
????而不是亚洲人物.即使是欧洲文本,我也得到Se?or了Señor.Señor或新浪新闻为????.Sefor Señor.我究竟做错了什么?我该如何修复代码?我可以恢复数据,如果是,如何恢复?
我使用的是mysql 5.5.10,它的character_sets是
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| collation_connection | utf8mb4_general_ci |
| collation_database | utf8mb4_general_ci |
| collation_server | utf8mb4_general_ci |
Run Code Online (Sandbox Code Playgroud)
我从utf8为iOS5的表情符号改变了utf8mb4.它们由4byte代码表示.
但当我插入3个笑脸表情符号时,'???' 在mysql中.
它们是3F 3F 3F(Hex).
我可以很好地存储iOS4的表情符号,但不能存储iOS5的表情符号.
我怎么能存储iOS5的表情符号?
请帮我.
我使用MySQL 5.5.29,utf8mb4字符集,有一个表用户包含一个nickname值为hex 的字段F09F988EF09F988E转换为表情符号.
现在打开MySQL控制台,并执行:
set names utf8mb4;
select nickname, hex(nickname) from user;
Run Code Online (Sandbox Code Playgroud)
nickname | hex(nickname)
---------+-----------------
| F09F988EF09F988E
Run Code Online (Sandbox Code Playgroud)
然后执行:
mysqldump --default-character-set=utf8 -utest -ptest test_dev user > user.sql
Run Code Online (Sandbox Code Playgroud)
检查user.sql并找到昵称显示??哪个十六进制字符串是3f
那么,mysqldump如何用UTF8导出正确的emojis字符串呢?
顺便说一句,数据库字符集环境配置如下:显示'character_set_%'之类的变量:
'character_set_client', 'utf8mb4'
'character_set_connection', 'utf8mb4'
'character_set_database', 'utf8mb4'
'character_set_filesystem', 'binary'
'character_set_results', 'utf8mb4'
'character_set_server', 'utf8mb4'
'character_set_system', 'utf8'
'character_sets_dir', '/data/mysql/share/charsets/'
Run Code Online (Sandbox Code Playgroud) 这是我的sql:
INSERT INTO comments (createdate,userid,profileid,comment,status)
VALUES (1449503167,65704,65704,'@Mr_S66 Wish I was There For The Xmas Party I Miss My Studio 66 Family 😜',15)
Run Code Online (Sandbox Code Playgroud)
这是我的评论架构:
+------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+----------------+
| commentid | int(11) | NO | PRI | NULL | auto_increment |
| parentid | int(11) | YES | | 0 | |
| refno | int(11) | YES | | 0 | |
| createdate | int(11) | YES | …Run Code Online (Sandbox Code Playgroud) 我试图将表情符号存储到我的服务器中的数据库中.我使用AWS EC2实例作为服务器,我的服务器详细信息如下:
操作系统:ubuntu0.14.04.1
MySQL版本:5.6.19-0ubuntu0.14.04.1 - (Ubuntu)
数据库客户端版本:libmysql - mysqlnd 5.0.11-dev - 20120503
我使用以下SQL在服务器中创建了一个数据库测试和表格表情符号:
CREATE DATABASE IF NOT EXISTS `test` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE `test`;
CREATE TABLE IF NOT EXISTS `emoji` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`text` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1;
Run Code Online (Sandbox Code Playgroud)
当我尝试执行以下插入时,会出现警告并且数据未正确存储:
INSERT INTO `test`.`emoji` (`id` , `text`) VALUES (NULL , ' ');
Run Code Online (Sandbox Code Playgroud)
插入的行ID:3
警告:#1366字符串值不正确:'\ xF0\x9F\x91\x86\xF0 ...'代表第1行的'text'列
存储在文本列中的值为:???? ???? ???? ????
相同的方案适用于我的本地数据库,并且值正确存储.除了操作系统(Windows)之外,我的本地几乎所有配置都相似.
我试图在mysql数据库上保存一些数据,输入包含这样的表情符号字符:'\U0001f60a\U0001f48d',我收到此错误:
1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x8A\\xF0\\x9F...' for column 'caption' at row 1"
Run Code Online (Sandbox Code Playgroud)
我在网上搜索并阅读了很多答案,包括: MySQL utf8mb4,保存表情符号时出错或MySQL utf8mb4,保存表情符号时出错或https://mathiasbynens.be/notes/mysql-utf8mb4#character-sets或http:/ /www.java2s.com/Tutorial/MySQL/0080__Table/charactersetsystem.htm但没有任何效果!
我有不同的问题:
这是 mydb 信息:
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name | Value |
+--------------------------+--------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8 |
| character_set_system …Run Code Online (Sandbox Code Playgroud) 在管理面板中保存带有表情符号字符的字段时,我在 django 中收到以下错误。
/admin/core/message/add/ 处的操作错误(1366,“第 1 行的列 'name' 的字符串值不正确:'\xF0\x9F\x98\x9E \xF0...'”)
我确信数据库已准备好utf8mb4,因为我可以在 中写入/读取这些表情符号字符phpmyadmin。
此外,保存的表情符号字符在 django 输出中正确显示phpmyadmin但显示???。
在我的另一个 django 项目中,表情符号表现得很好,直到我找不到两个环境之间的差异。
那么当我使用 python 保存同样的东西时会出现什么问题呢?
问题出在 django 框架下,所以我想要一个使 django 工作的解决方案。
显示问号???同时将表情符号存储在 MySQL 数据库中。我已经将数据库和表的排序规则设置为 utf8mb4。但是,它仍然显示??????而不是数据库中的表情符号。我还尝试更改 PHPMYADMIN 控制台中的现有行。但没有任何效果。显示???而不是 Unicode 字符。我还更改了表的存储引擎。InnoDB、MyISAM
SET NAMES utf8mb4;
ALTER DATABASE your_database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Run Code Online (Sandbox Code Playgroud)
