博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql表情存储报错问题
阅读量:6230 次
发布时间:2019-06-21

本文共 1074 字,大约阅读时间需要 3 分钟。

mysql采用utf-8字符编码,但在移动端使用输入法的表情并存储数据库的时候,出现错误。

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94'...

经排查,原因在于utf-8编码无法存储表情字符。

解决步骤:

  1. 更改数据库编码为utf8mb4和utf8mb4_unicode_ci
  2. 更改所需要存储表情的那张表的编码为utf8mb4和utf8mb4_unicode_ci
  3. 更改表中存储的那个字段的编码为utf8mb4和utf8mb4_unicode_ci
  4. 项目的数据库连接properties资源文件把URL的编码参数去掉
    经过以上的操作,表情可以存储到数据库了,但是出现问题是全部变成了??乱码
  5. 修改mysql配置文件my.cnf(windows为my.ini,linux为my.cnf)
    my.cnf一般在etc/mysql/my.cnf位置。找到后请在以下三部分里添加如下内容:
    [client]

    default-character-set = utf8mb4

    [MySQL]

    default-character-set = utf8mb4

    [mysqld]

    character-set-client-handshake = FALSE

    character-set-server = utf8mb4

    collation-server = utf8mb4_unicode_ci

    init_connect='SET NAMES utf8mb4'

  6. 重启mysql数据库,重新查看字符集
    经过5、6两个步骤,最后成功存储表情,并且查询显示也是可以的。
    除了这种方式,事实上,我们还可以对储存的数据进行编码,取的时候进行解码,这样也能解决这个问题,只是这种方式比较麻烦,你需要在所有存储该字段的地方编码,并在所有取用该字段的地方解码:
    1         try {2             URLEncoder.encode("sss", "utf8"); // 编码3             URLDecoder.decode("sss", "utf8"); // 解码4         } catch (UnsupportedEncodingException e) {5             e.printStackTrace();6         }

     

转载于:https://www.cnblogs.com/lay2017/p/7452897.html

你可能感兴趣的文章
运营商NFV MANO梦想照进现实
查看>>
2015中国APT研究报告:中国是APT攻击的主要受害国
查看>>
Chatsworth公司推出了一款高科技数据中心柜锁
查看>>
微软豪购Linkedin 补移动社交船票?
查看>>
苹果iMessage上线Business Chat功能
查看>>
戴尔EMC、日立数据系统和NetApp现已出货博科第六代光纤通道方案
查看>>
南航率先加入综合交通出行大数据开放云平台
查看>>
英特尔应当收购联发科原因:成功进入移动芯片市场
查看>>
宗宁:企业微博品牌榜的新时代意义
查看>>
实例:某大型企业遭受勒索蠕虫袭击纪实
查看>>
OA选型之技术与性价比
查看>>
《Clojure数据分析秘笈》——1.8节从网页表中抓取数据
查看>>
《交互式程序设计 第2版》一3.6 导入外部库
查看>>
“云计算”让城市智慧起来
查看>>
Google计划收购数据科学社区Kaggle
查看>>
中国RFID市场规模及结构浅析
查看>>
厂商掘金智能家居市场 三大路径殊途同归
查看>>
京津冀大数据走廊:张北风电光伏成亮点
查看>>
任正非:80后90后是一代将星在闪烁
查看>>
Oracle 12c多租户特性详解:PDB 的备份与恢复
查看>>