作者ggreeaart (Great)
看板Linux
标题[问题] 关於big5转utf8的问题
时间Tue Mar 5 12:13:22 2019
是这样的。
因为各种网路建言
想把上古时代完全没有宣告编码的Mysql+big5 server全部改成utf8编码
但是在dump&reload的时候碰壁
目前是已经成功用各种偏方
可以看到dump出来的.sql里面有显示正确中文
(那个把.sql先用latin1 reload回Mysql
再重新用latin1 dump出来让Mysql当翻译官的神奇办法)
但是把这份.sql iconv成utf8并且把内文latin1 sed 成 utf8之後
再reload回character_set已经重新设定成utf8的Mysql时出现了乱码
检查local之後总觉得好像不太对劲
想贴上来请大大帮忙判断一下是哪边出了什麽问题
以下为旧系统配置
CentOS release 5.5 (Final)
$ locale
LANG=zh_TW.BIG5
LC_CTYPE=en_US.ISO8859-1
LC_NUMERIC="zh_TW.BIG5"
LC_TIME="zh_TW.BIG5"
LC_COLLATE="zh_TW.BIG5"
LC_MONETARY="zh_TW.BIG5"
LC_MESSAGES="zh_TW.BIG5"
LC_PAPER="zh_TW.BIG5"
LC_NAME="zh_TW.BIG5"
LC_ADDRESS="zh_TW.BIG5"
LC_TELEPHONE="zh_TW.BIG5"
LC_MEASUREMENT="zh_TW.BIG5"
LC_IDENTIFICATION="zh_TW.BIG5"
LC_ALL=
$ file dump_utf8mb4.sql
dump_utf8mb4.sql: ASCII text, with very long lines
encoding=latin1
fileencoding=
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
mysql> show variables like 'colla%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
以下为新系统配置
CentOS Linux release 7.6.1810 (Core)
$ locale
LANG=en_US.UTF-8
LC_CTYPE=en_US.ISO8859-1
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_MESSAGES=en_US.UTF-8
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
文件属性
$ file dump_utf8mb4.sql
dump_utf8mb4.sql: ASCII text, with very long lines
encoding=latin1
fileencoding=utf-8
Mysql 编码设置
mysql> show variables like 'character%';
+--------------------------+--------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
mysql> show variables like 'colla%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_unicode_ci |
| collation_server | utf8_unicode_ci |
+----------------------+-----------------+
在新系统配置下目前.sql文件是可以看到正确显示的中文
但那个
LC_CTYPE=en_US.ISO8859-1
我怎麽看都觉得怪怪
有没有大神知道我要怎麽改.sql文件编码和系统编码
才可以再reload到新系统Mysql的时候可以正确显示中文
拜托各位大神了
谢谢各位大神m(_ _)m
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.34.59.173
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Linux/M.1551759207.A.CE4.html
1F:→ kenduest: 哪边看到乱码?截图一下 ?03/05 12:55
2F:→ kenduest: 题外话请用 utf8mb4 而不要再用 utf8, 表情符号才支援03/05 12:56
手上的东西是敏感资料所以不能贴QQ
目前的问题简单来说
原文新配置下看文件显示正确中文
LC_CTYPE=en_US.UTF-8
的时候看文件,中文会显示乱码
以及
将文件以 --default-character-set=utf8
或latin1或不设定,load到DB里面
(DB的 default charset utf8或 latin1)
共六种设定组合
用mysql -u -p 进去
看table,中文都是显示乱码
※ 编辑: ggreeaart (101.12.5.98), 03/05/2019 13:59:40
3F:→ LINGZ: 在开发测试环境生测试资料都不能贴?-_- 03/05 14:02