当前位置:小鱼儿玄机二站 > 关于计算机 > 手册关于改革列字符编码的三个bug

手册关于改革列字符编码的三个bug

文章作者:关于计算机 上传时间:2019-12-04

mysql 手册关于改过列字符编码的叁个bug,mysqlbug

品类因为历史原因使用了 GBK编码,蒙受非GBK编码字符时现身乱码难题,境况相比严重,一时半刻先筹划改进列的字符编码为 utf8mb4.

查看 mysql 手册:

图片 1

 

用 GBK 编码转 utf8 进行求证:

她的大要意思是,倘诺 是 char varchar text 等档期的顺序的,何况这个列的开始和结果也是接受的没有错的编码(GBK卡塔尔国,约等于列的内容的编码和列的定义中钦点的编码黄金时代致时,能够平昔动用肖似上面包车型客车讲话实行拍卖: 

ALTER TABLE t MODIFY COLUMN col_name varchar(60) CHARACTER SET utf8mb4;

万豆蔻梢头 列的剧情和列定义中钦点的编码不相近时,要求先 转成 binary, 在转出自个儿想要的字符集 utf8mb4.

而是实际上测验发掘,这里公布有误。若是根据他以此注明实行转的话,百分百会乱码! 此处的: with the desird character set 应该改成:with the right charcter set, then to the desired character set.

 

要是列的剧情和列定义中内定的编码不一样期,需求先转出 binary, 再转成 内容编码的十一分编码字符集(the right charcter set卡塔尔国 , 然后再转成 本人想要的 utf8mb4( the desired character set卡塔尔国。那样才不会乱码。

小结一下

1)若是你能保障您 gbk 编码的列中的内容也是gkb编码格式存款和储蓄的那么,转utf8mb4时,很简短,直接转就足以了:

    alter table t modify column col varchar(60) character set utf8mb4;

2卡塔尔 若是您不可能明确 你 gbk 编码的列中的内容不是 gbk 编码格式存款和储蓄的时,你要求先转成 binary, 再 转出 内容其实编码的字符集, 最终转出 utf8mb4:

  alter table t modify column col binary;

  alter table t modify column col varchar(60卡塔尔(قطر‎ character set 内容实在编码的字符集;

 alter table t modify column col varchar(60) character set utf8mb4;

3卡塔尔 不乱码还会有二个前提,就是 子集转超集。举个例子 GBK 转 utf8. 也便是GBK 编码的字符,UTF8都足以编码。

   借使是 utf8 转 GBK,那么那个utf8可以编码的,GBK无法编码的字符就能够乱码了,就能甩掉内容。

 

手册关于改过列字符编码的多少个bug,mysqlbug 项目因为历史由来使用了 GBK编码,境遇非GBK编码字符时现身乱码难题,意况相比较严重,一时半刻...

本文由小鱼儿玄机二站发布于关于计算机,转载请注明出处:手册关于改革列字符编码的三个bug

关键词: