导入mysql 乱码问题及 Linux 中的文件格式转换
问题
下载了一个单词sql文件,导入mysql报错,查看文件类型:
% file english_word.sql
english_word.sql: Non-ISO extended-ASCII text
与另一个导入成功的文件对比,发现格式不一样:
% file english-root.sql
english-root.sql: UTF-8 Unicode text, with very long lines, with no line terminators
转换文件格式
-
直接转换报错:
iconv: 未知 41 处的非法输入序列 -
参考[Linux 下文件Non-ISO extended-ASCII编码问题]( https://blog.csdn.net/niityzu/article/details/42494477#:~:text=使用如下命令转换: iconv -f CP850 -t UTF-8 SogouQ.mini >SogouQueryLog.txt ,Unicode%20English%20text%2C%20with%20very%20long%20lines%20%E7%94%B1%E7%BB%93%E6%9E%9C%E5%8F%AF%E7%9F%A5%EF%BC%9A%E8%BD%AC%E6%8D%A2%E6%88%90%E5%8A%9F%EF%BC%81)
iconv -f 源格式 -t UTF-8 原来的文件 > 新的文件 -
使用脚本查找适合的格式,只需要替换下面的
english_word.sql:iconv --list | sed 's///$//' | sort > encodings.list
for a in
cat encodings.list; do
printf "$a "
iconv -f $a -t UTF-8 english_word.sql > /dev/null 2>&1 \
&& echo "ok: $a" || echo "fail: $a"
done | tee result.txt执行后,
cat result.txt | grep -v fail | less即是可用于转换的指定格式。 -
为了转换得到正常显示中文的文件,需要在结果中进一步搜索
GB格式% cat result.txt | grep -v fail | grep GB
EBCDIC-CP-GB ok: EBCDIC-CP-GB
GB13000 ok: GB13000
GB18030 ok: GB18030
GBK ok: GBK -
最终转换命令如下:
iconv -f GB18030 -t UTF-8 english_word.sql > my.sql
-
再次导入成功
mysql> select * from EnWords limit 10;
+----------+--------------------------------------------------------------------------------------------------------------+
| word | explain |
+----------+--------------------------------------------------------------------------------------------------------------+
| a | n.(A)As 或 A's 安(ampere);(a) art.一;n.字母A /[军] Analog.Digital,模拟/数字 /(=account of) 帐上 |
| aaal | American Academy of Arts and Letters 美国艺术和文学学会 |
| aachen | 亚琛[德意志联邦共和国西部城市] |
| aacs | Airways and Air Communications Service (美国)航路与航空通讯联络处 |
| aah | [军]Armored Artillery Howitzer,装甲榴弹炮;[军]Advanced Attack Helicopter,先进攻击直升机 |
| aal | ATM Adaptation Layer,ATM适应层 |
| aapamoor | n.[生]丘泽,高低位镶嵌沼泽 |
| aapss | American Academy of Political and Social Science 美国政治和社会科学研究院 |
| aar | n.阿勒河(位于瑞士中部,亦作Aare) |
| aardvark | n.[动]土豚 |
+----------+--------------------------------------------------------------------------------------------------------------+

浙公网安备 33010602011771号