数据库mysql 如何保存表情符号 然后返回到前端

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库mysql 如何保存表情符号 然后返回到前端相关的知识,希望对你有一定的参考价值。

安卓和ios传递到服务器,服务器如何保存,然后返回到前端

参考技术A 你是做winform吧,如果是web的话建议保存图像的二进制。winform可以用控件fileupload...图片的路径可以直接提取的(Server.MapPath),你可以查一下追问

php

参考技术B 用字符串,然后发过去的时候用正则匹配替换成图片路径 参考技术C 用字符串,然后发过去的时候用正则匹配替换成图片路径

使用 Spring 应用程序中的休眠将表情符号 unicode 字符保存在 mysql 数据库中

【中文标题】使用 Spring 应用程序中的休眠将表情符号 unicode 字符保存在 mysql 数据库中【英文标题】:Save emoji unicode characters in mysql database with hibernate from spring application 【发布时间】:2017-10-06 12:36:45 【问题描述】:

我有一个使用 spring、hibernate 和 mysql 作为数据库开发的 Web 应用程序。

当我尝试输入表情符号 unicode 字符时,例如“????”从一个表格然后我得到一个例外,比如

SQL Error: 1366, SQLState: HY000
Incorrect string value: '\xF0\x9F\x98\x80' for column 'column_name' at row 1

Handler execution resulted in exception
org.springframework.orm.hibernate3.HibernateJdbcException: JDBC exception on Hibernate data access: SQLException for SQL [/* insert com.sdfasf.domain.ProductReport */ insert into product_report (issolved, isvalid, product_id, report_account_id, report_comment, report_date, solve_account_id, solve_comment, solve_date) values (?, ?, ?, ?, ?, ?, ?, ?, ?)]; SQL state [HY000]; error code [1366]; could not insert: [com.sdfasf.domain.ProductReport]; nested exception is org.hibernate.exception.GenericJDBCException: could not insert: [com.sdfasf.domain.ProductReport]
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:645)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:102)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:368)

我改变 jdbc url 像

jdbc:mysql://$database.host/$database.name?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8mb4

以及数据库CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci、表CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci和列排序规则utf8mb4_unicode_ci;

【问题讨论】:

你解决过这个问题吗? 如果您使用的是 Connector/J dev.mysql.com/doc/connector-j/5.1/en/… 【参考方案1】:
ALTER TABLE ... CONVERT TO CHARACTER SET utf8mb4

注意:数据库和表字符集只是DEFAULTs,它们不一定是列所使用的。

Incorrect string value: '\xF0... 肯定需要 utf8mb4,而不仅仅是 utf8。

【讨论】:

让我们看看指定UTF-8 等的spring/hibernate 配置,以及您所做的ALTER hibernate.connection.useUnicode=true hibernate.connection.charSet=utf8mb4 也许还有hibernate.connection.characterEncoding=utf-8<form accept-charset="UTF-8">。我不清楚你提到的应该是“MySQL”——utf8mb4(如你所列出的),还是“世界其他地方”——UTF-8。另一个注释提到<property name="url" value="jdbc:mysql://localhost:3306/miniprojetjee?useUnicode=true&connectionCollation=utf8_general_ci&characterSetResults=utf8&characterEncoding=utf-8"/>@RequestMapping(value = "/getRegion2", produces="application/json; charset=UTF-8",method = RequestMethod.GET)【参考方案2】:

所以他们对此的解决方法是在你的 my.ini 中添加以下内容,然后重新启动 mysql 服务器。

character-set-server=utf8mb4
default-character-set=utf8mb4

如果您有需要迁移的数据库,请参阅此处:https://mathiasbynens.be/notes/mysql-utf8mb4

一定要更新休眠值: <property name="hibernate.connection.CharSet" value="utf8mb4" /> <property name="hibernate.connection.characterEncoding" value="utf8mb4"/> <property name="hibernate.connection.useUnicode" value="true"/>

【讨论】:

以上是关于数据库mysql 如何保存表情符号 然后返回到前端的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring 应用程序中的休眠将表情符号 unicode 字符保存在 mysql 数据库中

从 iPhone 到 Python/Django 的表情符号

MySQL utf8mb4,保存表情符号时出错

表情符号未使用 mysql 和 node 保存在数据库中

微信符号表情怎么打?

我们如何将表情符号保存在 SQL 数据库中以保留它们的唯一性以进行相等比较?