`

修改Mysql 字符集,支持Emoji表情(转)

 
阅读更多

转载自:http://my.oschina.net/u/2958/blog/108257

 

 

插入失败

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1  
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)  
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593)  
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525)  
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986)  
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140)  
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2620)  
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1662)  
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1581) 

1、linux 处理步骤:修改my.cnf vi /etc/my.cnf

[mysqld]

character-set-server=utf8mb4

[mysql]

default-character-set=utf8mb4

 

Ashampoo_Snap_2013.02.06_17h15m08s_004_

修改后重启Mysql

 

2. 以root身份登录Mysql

       查看当前字符集 show variables like ‘character_set_%’

Ashampoo_Snap_2013.02.06_17h26m18s_005_

show variables like ‘collation_%’;

image

       修改环境变量,将一下都修改成utf8mb4

       1、set character_set_client = utf8mb4;

       2、set character_set_connection = utf8mb4;

       3、set character_set_database = utf8mb4;

       4、set character_set_results = utf8mb4;

       5、set character_set_server = utf8mb4;

image 

3. 将已经建好的表也转换成utf8mb4

命令:alter table TABLE_NAME convert to character set utf8mb4 collate utf8mb4_bin; (将TABLE_NAME替换成你的表名)

 

 

4. 知识补充 MYSQL 字符集问题

 

  • MySQL的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。

 

  • 对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)连接(connection)。

 

  1. MySQL默认字符集

     MySQL对于字符集的指定可以细化到一个数据库,一张表,一列,应该用什么字符集。 
但是,传统的程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配置,那么,默认的配置从何而来呢?    

(1)编译MySQL 时,指定了一个默认的字符集,这个字符集是 latin1;

(2)安装MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;

(3)启动mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的配置,此时 character_set_server 被设定为这个默认的字符集;

(4)当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为character_set_server

(5)当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集;

(6)在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个数据库默认的字符集;

(7)当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;

简单的总结一下

      如果什么地方都不修改,那么所有的数据库的所有表的所有栏位的都用latin1 存储,不过我们如果安装 MySQL,一般都会选择多语言支持,也就是说,安装程序会自动在配置文件中把default_character_set 设置为 UTF-8,这保证了缺省情况下,所有的数据库的所有表的所有栏位的都用 UTF-8 存储。

分享到:
评论

相关推荐

    MySQL无法存储emoji表情解决方案分析

    本文实例讲述了MySQL无法存储emoji表情解决方案。分享给大家供大家参考,具体如下: 今天学习爬虫爬伯乐在线的文章,由于在文章中有emoji表情,导致有emoji表情的文章都爬取不下来 经过一番搜索之后终于解决了问题。...

    使MySQL能够存储emoji表情字符的设置教程

    MySQL 需要支持 emoji 表情符号版本需要大于5.5.3,且字符集需要设置为utf8mb4 字符集。 utf8mb4和utf8到底有什么区别呢?原来以往的mysql的utf8一个字符最多3字节,而utf8mb4则扩展到一个字符最多能有4字节,所以...

    emoji表情符号mysql插入与读取

    emoji表情符号存放数据库需要数据库支持4个字节的数据格式,而mysql默认的utf8只能存储3个字节,所以需要mysql版本5.6及以上,并设置数据库为utf8mb4字符集

    mysql中插入emoji表情失败的原因与解决

    mysql的utf8编码的一个字符最多3个字节,但是一个emoji表情为4个字节,所以utf8不支持存储emoji表情。但是utf8的超集utf8mb4一个字符最多能有4字节,所以能支持emoji表情的存储。 下面话不多说了,来一起看看详细的...

    mysql存储emoji表情步骤详解

    Caused by: java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x94\xA5...1、修改MYSQL字符集 Mysql设置字符编码集为utf8mb4,对应的库、表、字段设置为utf8mb4,注意如果是已经存在的表utf8编码集修改为utf8

    MySQL插入emoji表情失败问题的解决方法

    之前一直认为UTF-8是万能的字符集问题解决方案,直到最近遇到这个问题。最近在做新浪微博的爬虫, 在存库的时候发现只要保持emoji表情,就回抛出以下异常: Incorrect string value: '\xF0\x90\x8D\x83\xF0\x90......

    3种方法轻松处理php开发中emoji表情的问题

    原来是因为Mysql的utf8字符集是3字节的,而emoji是4字节,这样整个昵称就无法存储了。这要怎么办呢?我来介绍几种方法 解决方案 1、使用utf8mb4字符集 如果你的mysql版本>=5.5.3,你大可直接将utf8直接升级为utf8mb4...

    Emoji在Web端显示

    但是在Web端确出现了乱码,如过你用的是mysql那么恭喜您,只需要更改数据库的字符集;把utf8改为uft8mb4网页就可以直接显示;如果是其他数据库,则需要用到我提供的emoji包,请根据需要进行下载,如有疑问请给我留言...

    mysql/Java服务端对emoji的支持与问题解决方法详解

    // 抛出字符集不支持的异常 sql.SQLException: Incorrect string value: ‘\xF0\x9F\x98\x97\xF0\x9F…’ for column ‘CONTENT’ at row 1 原因分析 MYSQL 5.5 之前, utf8 编码只支持1~3个字节,即BMP这部分的...

    docker官方mysql镜像自定义配置详解

    之前为了节省安装时间,所以用官方mysql docker镜像启动mysql。 通过 代码如下:$ docker run –name ...于是这样数据库一直跑着,但是由于最近程序需要支持emoji表情,不得不将mysql的字符集更改。 代码如下:$ do

    利用rpm安装mysql 5.6版本详解

    其实之前使用yum安装MySQL确实很方便,但是默认安装的myql5.0版本的,不支持utf8mb4(utf8mb4扩展到一个字符最多能有4节,所以能支持更多的字符集,比如支持emoji表情)编码格式,所以要升级数据库,yum库升级貌似...

    设置mysql5.7编码集为utf8mb4的方法

    移动端的表情或者一些emoji是4字节的,但是utf-8是3字节的,这篇文章主要介绍了设置mysql5.7编码集为utf8mb4的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    Java开发一款灵活且易扩展的网站内容管理系统.zip

    如使用MySQL,字符集选择为utf8或者utf8mb4(支持更多特殊字符如表情字符emoji,推荐)。 执行数据库脚本。数据库脚本在database目录下。 在eclipse中导入maven项目。点击eclipse菜单File - Import,选择Maven - ...

    MySQL 编码utf8 与 utf8mb4 utf8mb4_unicode_ci 与 utf8mb4_general_ci

    参考:mysql字符集小结 utf8mb4 已成为 MySQL 8.0 的默认字符集,在MySQL 8.0.1及更高版本中将 utf8mb4_0900_ai_ci 作为默认排序规则。 新项目只考虑 utf8mb4 UTF-8 编码是一种变长的编码机制,可以用1~4个字节存储...

    基于SpringBoot+Vue实现的宠物医院诊所管理系统+微信小程序,含mysql数据库+开发笔记

    字符集为utf8 -- UTF-8 Unicode(为了节省空间,我不打算为了emoji而使用utf8mb4) 排序规则为utf8_general_ci(意为:不区分大小写,这样比较快) 接着在pet_forge数据库下,运行本项目中数据库备份文件夹下的pet_forge...

    anlin-chat_1.0.zip

    安装已默认字符集为 utf8mb4(emoji),如需utf8请修改根目录sql.php文件(将utf8mb4全部替换成utf8) 支持邀请码/邮件/等注册方式 自定义模板与ubb创建个性化页面 会员管理,帖子管理,虚拟在线会员设置,马甲账号设置/...

    Anlin-chat多功能聊天室PHP源码

    装置已默许字符集为 utf8mb4(emoji),如需utf8请修正根目录sql.php文件(将utf8mb4全部交换成utf8) 支持约请码/邮件/等注册方式 自定义模板与ubb创立个性化页面 会员管理,帖子管理,虚拟在线会员设置,马甲账号设置/...

    ClassCMS内容管理系统-PHP

    bug修复,支持utf8mb4字符集,支持存储Emoji表情 v1.6 更新说明 bug修复 v1.5 更新说明 bug修复 v1.4 更新说明 bug修复 新增数据树形列表框 v1.3 更新说明 bug修复 兼容ipv6网址 v1.2 更新说明 bug修复 v1.1 更新说明 ...

Global site tag (gtag.js) - Google Analytics