Bash
iconv 無法從 ASCII 轉換.. 為什麼?
如果我在 Total Commander 中打開它
F3
並按下S
正確的內容將顯示。我試圖在 bash 中做同樣的事情
iconv
:
iconv -f ASCII -t UTF8 input.txt
但我得到了這個:
iconv: illegal input sequence at position 0
如果我從
CP850
or開始CP852
:
iconv -f CP850 -t UTF8 input.txt
iconv -f CP852 -t UTF8 input.txt
我將在輸出中包含一些不需要的字元:
̦ŮŢŮ
如何在 Linux 終端中也有請求的內容?Total Commander 顯示時使用了什麼編碼
ASCII (DOS-charset)
?或者它是一個錯誤iconv
?
它不是 ASCII,因此您無法將文件從 ASCII 轉換為其他任何內容。經過一番調查,編碼
CP437
似乎給出了“好的”視覺表示。以供將來參考,這是我確定這一點的方式。# Workspace mkdir picture cd picture # Get the file curl http://tiborzsitva.szm.com/ascii/input.txt >x file x x: ISO-8859 text, with CRLF line terminators # Try and convert with every possible conversion for e in $(iconv -l | awk '{print $1}') do iconv -f "$e" -t utf8 <x >"x.$e" 2>"x.$e.error" done # Delete the failed conversion attempts (those with error reports) for f in x.* do [ -s "$f.error" ] && rm -f "$f" rm -f "$f.error" done # Link identical files together for f in x.* do c=$(cksum <"$f") cf="x.cksum.${c// /_}" [ -f "$cf" ] && ln -f "$cf" "$f" || ln -f "$f" "$cf" done rm -f x.cksum.* # See what each one looks like ls -l x.* less x.* # The first one (437) looks good so look for a nice encoding name iconv -l | grep -w 437 437 CP437 IBM437 CSPC8CODEPAGE437
我建議這樣
CP437
做會很好