在windows下編輯好了SQL執(zhí)行腳本,但是傳到linux上執(zhí)行時報錯,顯示有不識別的字符。這需要進行字符集的轉換。我一般是用iconv進行字符的邊編碼轉換。但是這次執(zhí)行時報出如下錯誤:iconv: 未知 2 處的非法輸入序列
上網(wǎng)找到如下說明資料:
編碼轉換的時候,如果你的源格式設定為 GB2312 的話,而且在轉換成 UTF-8 的時候,發(fā)現(xiàn)程序會報“illegal input sequence at position xxxx”的錯誤。這是由于你之前的做的假定有問題。GB2312 是國標里面一個最小也是最早的中文編碼標準。其中,只涵蓋了 6,763 個漢字。所以你需要轉換的文件的原始的格式可能并不是 GB2312 編碼。這個時候,你可以用 GB18030 做為源格式來進行轉換。GB18030 是最新的國家標準,包含了 27,564 個漢字,而且向下兼容 GB2312 和 GBK。
假定的字符集指定,上述情況還可以在iconv中加入 -c 選項,忽略無效的字符,也可轉換成功。
附iconv的用法:
iconv命令用于轉換指定文件的編碼,默認輸出到標準輸出設備,亦可指定輸出文件。
用法:iconv [選項...] [文件...]
有如下選項可用:
輸入/輸出格式規(guī)范:
-f, --from-code=名稱 原始文本編碼
-t, --to-code=名稱 輸出編碼
信息:
-l, --list 列舉所有已知的字符集
輸出控制:
-c 從輸出中忽略無效的字符
-o, --output=FILE 輸出文件
-s, --silent 關閉警告
--verbose 打印進度信息
--help 給出該系統(tǒng)求助列表
--usage 給出簡要的用法信息
-V, --version 打印程序版本號
例子:
iconv -f utf-8 -t gb2312 aaa.txt >bbb.txt
這個命令讀取aaa.txt文件,從utf-8編碼轉換為gb2312編碼,其輸出定向到bbb.txt文件。