不能在mysql DB liferay中保存表情符号

时间:2016-11-22 09:59:55

标签: mysql exception save liferay portlet

我正在使用 liferay 6.2 mysql- 5.5.52 。在自定义portlet中,我公开了Android和Android使用的一些Web服务。 ios应用程序,在某些api中,它们是一个字符串参数&如果我们在该param中发送微笑,它会抛出异常: java.sql.SQLException:字符串值不正确:' \ xF0 \ x9F \ x98 \ x90 \ xF0 \ x9F ...'对于专栏'评论_'在第1行,我也尝试将数据库排序更改为 utf8mb4 -default排序规则,在这种情况下我能够保存此☺,但不能保存其他人,我试图找出什么是问题。

2 个答案:

答案 0 :(得分:3)

由于您没有提供有关更改内容的详细信息,因此很难确定此答案是否相关。如果您没有,请务必更改字符集,而不仅仅是整理

  

字符集是一组符号和编码。排序规则是一组用于比较字符集中字符的规则。

同时仔细检查数据库连接字符串。它可以强制执行与为数据库/表指定的编码不同的编码。

答案 1 :(得分:0)

问题可以出在任何一层 - 绝对与编码有关(正如Milen在他的回答中所描述的那样)。您可能会从Web服务中获取非法编码(或解码)的内容,在数据库连接(客户端)中将其编辑或在数据库中编码错误。 Liferay的文档仅提及数据库create database dbname character set utf8;

易于测试和发现的UTF-8字符的主要来源之一是http://fliptitle.com - 一旦您最喜欢的测试文本正确通过,您可能编码正确。如果它没有:检查你的字体,因为要么他们没有使用所有的字符,要么你在某处编码错误。