java.sql.SQLException:Incorrectstringvalue:'\xF0\x9F\x90\x94"
程序员文章站
2022-07-07 23:17:32
错误提示:
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\x94"
原因是My...
错误提示: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x90\x94"
原因是Mysql里UTF8编码最多只能支持3个字节,而Emoji表情字符使用的UTF8编码,很多都是4个字节,有些甚至是6个字节。
解决的方案有两种:
1.使用utf8mb4的mysql编码来容纳这些字符。
2.过滤掉这些特殊的表情字符。
关于第一种解决方法,请参考:https://segmentfault.com/a/1190000000616820 和 https://info.michael-simons.eu/2013/01/21/Java-mysql-and-multi-byte-utf-8-support/
有大量细节需要注意,例如:mysql版本,mysql的配置,mysql connector的版本等等。。
因为我们使用的云数据库,所以我选择了过滤这些特殊字符。其实过滤的方式很简单,直接使用正则表达式匹配编码范围,然后替换就行了。
下面是代码。
public static String filterEmoji(String source) { if(source != null) { Pattern emoji = Pattern.compile ("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]",Pattern.UNICODE_CASE | Pattern . CASE_INSENSITIVE ) ; Matcher emojiMatcher = emoji.matcher(source); if ( emojiMatcher.find()) { source = emojiMatcher.replaceAll("*"); return source ; } return source; } return source; }
上一篇: linux 常见命令及说明杂记
下一篇: Jsp内置对象及EL表达式的使用
推荐阅读
-
MySQL存储表情时报错:java.sql.SQLException: Incorrect string value:‘\xF0\x9F\x92\xA9\x0D
-
MySQL存储表情时报错:java.sql.SQLException: Incorrect string value:‘\xF0\x9F\x92\xA9\x0D
-
MySQL存储表情时报错:java.sql.SQLException: Incorrect string value:‘\xF0\x9F\x92\xA9\x0D\x0A...’的解决方法
-
MySQL存储表情时报错:java.sql.SQLException: Incorrect string value:‘\xF0\x9F\x92\xA9\x0D\x0A...’的解决方法
-
java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x8C\xB01\xEF...‘ for column ‘content‘ at
-
MySQL存储表情时报错:java.sql.SQLException: Incorrect string value:‘\xF0\x9F\x92\xA9\x0D
-
java.sql.SQLException:Incorrectstringvalue:'\xF0\x9F\x90\x94"
-
MySQL存储表情时报错:java.sql.SQLException: Incorrect string value:‘\xF0\x9F\x92\xA9\x0D\x0A...’的解决方法
-
MySQL存储表情时报错:java.sql.SQLException: Incorrect string value:‘\xF0\x9F\x92\xA9\x0D\x0A...’的解决方法
-
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8E' for column 'name' at row 1