我在我的项目中使用表情符号字符.该字符被保存(??)到mysql数据库中.我曾经使用过数据库Default collation utf8mb4_general_ci.它表明
1366字符串值不正确:'\ xF0\x9F\x98\x83\xF0\x9F ...'用于第1行的"注释"列
我尝试从MySQL数据库中的服务中保存用户的名称.这些名字可以包含表情符号(仅举例)
搜索了一下后,我发现这个stackoverflow链接到本教程.我按照步骤操作,看起来一切都配置正确.
我有一个数据库(charset和collation设置为utf8mb4(_unicode_ci)),一个名为TestTable的表,也是这样配置的,以及一个"Text"列,以这种方式配置(VARCHAR(191)utf8mb4_unicode_ci).
当我尝试保存表情符号时,我收到一个错误:
Example of error for shortcake ():
Warning: #1300 Invalid utf8 character string: 'F09F8D'
Warning: #1366 Incorrect string value: '\xF0\x9F\x8D\xB0' for column 'Text' at row 1
Run Code Online (Sandbox Code Playgroud)
我能够正确保存的唯一表情符号是太阳☀️
虽然我没有尝试所有这些都是诚实的.
我在配置中缺少什么?
请注意:所有保存测试都不涉及客户端.我使用phpmyadmin手动更改值并保存数据.因此,在服务器正确保存emojis 之后,我将负责正确配置客户端.
另一个旁注:目前,在保存表情符号时,我或者得到上面的错误,或者没有错误,数据Username 将被存储为Username ????.错误或无错误取决于我保存的方式.当通过SQL语句创建/保存时我用问号保存,当编辑内联时我用问号保存,当使用编辑按钮进行编辑时,我得到错误.
谢谢
编辑1: 好吧所以我认为我发现了问题,但不是解决方案.看起来数据库特定变量没有正确更改.
当我在我的服务器上以root用户身份登录并读出变量(全局)时:
使用的查询:SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name | Value |
+--------------------------+--------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 …Run Code Online (Sandbox Code Playgroud) 我试图使用UTF-8并遇到麻烦.
我尝试了很多东西; 这是我得到的结果:
????而不是亚洲人物.即使是欧洲文本,我也得到Se?or了Señor.Señor或新浪新闻为????.Sefor Señor.我究竟做错了什么?我该如何修复代码?我可以恢复数据,如果是,如何恢复?
有没有把一个javascript字符串传递给NodeJS友好的MySQL?我正在尝试将电子邮件地址传递给我的NodeJS服务器并查询到MySQL数据库.使用常用文本(如用户名)工作正常时,但电子邮件地址却没有.明确地使用转义不是正确的答案,因为它不适用于SQL插入.我假设我需要PHP函数的一些东西mysql_real_escape_string().
我正在尝试将以下推文存储到longtext列/ utf8 charset/MySQL 5.5中.带有MyISAM存储的数据库.
我们也尝试过utf8mb4,utf16,utf32字符集,但无法解决这个问题.
tweet="@Dorable_Dimples: Okay enough of those #IfYouWereMines I'm getting dep
ressed. #foreveralone ?" lol yes
mysql> ALTER DATABASE foo CHARACTER SET utf8 COLLATE utf8_bin;
mysql> show variables like 'char%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /rdsdbbin/mysql-5.5.12.R1/share/charsets/ | …Run Code Online (Sandbox Code Playgroud) 情况:
如果已经提出这个问题,请提前抱歉,但解决方案对我不起作用.
无论我尝试什么,我都不能将表情符号存储在我的数据库中.他们被保存为????.
正确保存的唯一表情符号只需要3个字节,如害羞的脸或太阳.
实际的utf8mb4无效.
它已经在Android和Ios上进行了测试.结果相同.
版本:
Mysql:5.5.49
CodeIgniter:3.0.0
步骤:
我修改了数据库字符集和排序规则属性.
ALTER DATABASE my_database CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci
我修改了表字符集和排序规则属性.
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
我在可能的情况下将表的每个字段设置为Encoding:UTF-8(ut8mb4)和Collation:utf8mb4_unicode_ci
我在CodeIgniter应用程序中修改了数据库连接.
我运行了以下内容: SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci
最后我也试过这个:
REPAIR TABLE table_name;
OPTIMIZE TABLE table_name;
一切都应该设置正确,但它不起作用.
数据库设置:
这是运行以下命令的结果:
`SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';`
Run Code Online (Sandbox Code Playgroud)
表设置:
表结构的screeshot:
数据库连接:
这些是database.php中的数据库连接设置(注意这不是唯一的数据库,还有其他使用utf8连接的数据库)
$db['my_database'] = array(
'dsn' => …Run Code Online (Sandbox Code Playgroud) 我们正在开发一个iPhone应用程序,可以将表情符号从iPhone发送到服务器端PHP并插入到MySQL表中.我在做服务器端的工作.
但插入语句执行成功后,插入的值变为空白.
我可以正确插入字段(varchar)的是文本,但是一旦包含表情符号,
就可以插入文本并自动剪切表情符号.
有人给我建议将字段类型设置为Blog,以便它可以存储图像数据.
但插入的值并不总是包括表情符号的情况和大小很小.
*我使用mysql_real_escape_string来插入值.
我试图将表情符号/表情符号插入MSSQL数据库,但它只是存储??? 而不是表情符号/表情符号.
我只发现MSSQL而不是MySQL的帮助
我试过了:链接
但找不到答案,甚至无法设置: ALTER TABLE mytable charset=utf8mb4, MODIFY COLUMN textfield1 VARCHAR(255) CHARACTER SET utf8mb4,MODIFY COLUMN textfield2 VARCHAR(255) CHARACTER SET utf8mb4;
MSSQL无法识别此命令.这仅适用于Microsoft SQL服务器而非MySQL
我的数据库,表格,字段都使用utf8mb4.我可以将表情符号存储在某些字段中.现在我尝试查询如下:
SELECT*FROM userWHERE name =''
令人惊讶的是,结果是具有不同字段名称的记录,例如''
看起来mysql按照它们的长度而不是内容来匹配表情符号字符串.
有什么想法解决这个问题吗?非常感谢.
我正在尝试用表情符号保存文本。然而,表情符号并不存储在文本中。我进入数据库而不是表情符号?。
# Doctrine Configuration
doctrine:
dbal:
driver: pdo_mysql
host: '%database_host%'
port: '%database_port%'
dbname: '%database_name%'
user: '%database_user%'
password: '%database_password%'
charset: utf8mb4
Run Code Online (Sandbox Code Playgroud)
下课后我想在哪里保存表情符号
/**
* Post
*
* @ORM\Table(name="post", options={"collate"="utf8mb4_unicode_ci", "charset"="utf8mb4"})
* @ORM\Entity(repositoryClass="AppBundle\Repository\PostRepository")
*/
class Post
{
/**
* @ORM\Column(type="integer", name="id")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="text", nullable=false, name="text")
*/
private $text;
}
Run Code Online (Sandbox Code Playgroud)
例子
发布正文
{"text": "test test"}
Run Code Online (Sandbox Code Playgroud)
text数据库中的列
test ? test
Run Code Online (Sandbox Code Playgroud)