文档章节

再谈 My sql UTF8

idoz
 idoz
发布于 2015/08/26 15:06
字数 251
阅读 78
收藏 0

UTF-8可能是我们使用的最多的一种字符编码,一直以其支持的广泛的字符被人称道,我也经常在项目中使用它,至到遇到了:SQL state [HY000]; error code [1366]; Incorrect string value: '\xF0\x9F\x92\x8BRo...' for column

DB环境:mysql,

字符集编码: utf8

这是在jdbc中执行的时候出现的问题,如果将出错的sql语句在command中执行,不是会出错的,为什么呢?

在mysql 中规定utf8的字符的最大长度为3(maxLen=3), 但是一些unicode字符在转成utf8编码之后有4字节的

长度,所以就出错了。

例如: *号在转为utf8时为 f0 9f 8d 8e

String c = "*";
byte[] bytes = c.getBytes("utf8");
for (byte b : bytes){
 System.out.print(Integer.toHexString(0x00FF &b)+" ");
} // 输出 f0 9f 8d 8e

好在mysql 早为我们想好了这些,那如何办呢?

只需将出错的列的编码更改为utf8mb4就行了, what is mb4 means?  max byte ?

ALTER TABLE {yourTable} MODIFY {column} VARCHAR(45) 
CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;





© 著作权归作者所有

共有 人打赏支持
idoz
粉丝 12
博文 369
码字总数 182002
作品 0
郑州
再谈乱码问题,如何解决MYSQL数据中文乱码问题

在之前的文章里,我已经提过如何解决JSP中乱码问题(解决tomcat下中文乱码问题 ),其中也详细解说了MYSQL乱码问题,相信通过里面的办法,肯定都已经解决了JSP里的乱码问题,不过还是有些人的...

ly5156
2011/08/12
0
0
Mysql中的排序规则utf8_unicode_ci、utf8_general_ci的区别总结

用了这么长时间,发现自己竟然不知道utfbin和utfgeneral_ci这两者到底有什么区别。。 ci是 case insensitive, 即 "大小写不敏感", a 和 A 会在字符判断中会被当做一样的; bin 是二进制, a 和...

dinggosumsung
2016/07/05
4
0
MySQL 编码设置

MySQL 编码设置 2011-8-11 12:10:00来源:Sql mysql编码设置 MYSQL 2009-09-11 15:37 阅读73 评论1 字号: 大大 中中 小小 mysql> SHOW VARIABLES LIKE 'characterset%'; +-----------------......

片刻
2015/12/22
41
0
mysql 使用小记(持续更新)

1 导入sql文件 第一种:数据库已存在,root登录,终端中选择数据库,mysql>source 文件绝对路径/sql文件名 (注意:文件路径中建议使用“/”,如果使用“”,要首先进行转义) 第二种:sql文...

wufa
2012/07/13
0
0
Mysql导入导出数据库以及数据表

一、导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): 1、导出数据和表结构: mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql /usr/local/mysql/bin/ mysqldump -u...

成越
2016/06/17
62
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

jquery创建类似于java的map

var map = {}; // Map map = new HashMap(); map[key] = value; // map.put(key, value); var value = map[key]; // Object value = map.get(key); var has = key in map; // boolean has = ......

SuperDabai
39分钟前
0
0
java大数据转换16进制转10进制

public static void main(String[] args) {String hex = "0xdbf3accc683297cf0000";BigInteger amount = new BigInteger(hex.substring(2), 16);System.out.println(amount);......

任梁荣
昨天
2
0
OSChina 周六乱弹 —— 目测我们程序员丁克的几率不大

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @真Skr小机灵鬼儿:8.13分享Jocelyn Pook/Russian Red的单曲《Loving Strangers》 《Loving Strangers》- Jocelyn Pook/Russian Red 手机党少...

小小编辑
昨天
9
3
TypeScript基础入门 - 函数 - 剩余参数

转载 TypeScript基础入门 - 函数 - 剩余参数 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.2.1 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能...

durban
昨天
1
0
OpenCV边缘检测算子原理总结及实现

1. 拉普拉斯算子 原理:是一种基于图像导数运算的高通线性滤波器。它通过二阶导数来度量图像函数的曲率。 拉普拉斯算子是最简单的各向同性微分算子,它具有旋转不变性。一个二维图像函数的拉...

漫步当下
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部