iconv는 ASCII에서 변환할 수 없습니다..왜죠?

iconv는 ASCII에서 변환할 수 없습니다..왜죠?

이 파일이 있습니다.

토탈커맨더에서 열어서 F3누르면 S정확한 내용이 나옵니다.

나는 bash에서도 같은 일을 하려고 노력한다 iconv:

iconv -f ASCII -t UTF8 input.txt

하지만 나는 이것을 얻습니다:

iconv: illegal input sequence at position 0

내가 CP850또는에서 수행하는 경우 CP852:

iconv -f CP850 -t UTF8 input.txt

iconv -f CP852 -t UTF8 input.txt

출력에 원하지 않는 문자가 포함됩니다.

̦ŮŢŮ

Linux 터미널에서도 요청한 콘텐츠를 어떻게 얻을 수 있나요? Total Commander는 디스플레이에 어떤 인코딩을 사용합니까 ASCII (DOS-charset)? 아니면 버그인가요 iconv?

답변1

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해보면 좋을 것 같다고 제안함

답변2

ASCII는 7비트 인코딩입니다., 파일은 0xdb여러 바이트(8비트 값)로 시작됩니다.

(부분적으로) 그래픽이라면 아마도8비트 DOS 코드 페이지 중 하나. CP850과 CP437을 사용해 보았는데 후자가 적당한 이미지를 제공하는 것 같았습니다.

말이 되네요 왜냐하면CP437은 원래 IBM PC 코드 페이지입니다.그리고CP850 Latin-1 1개. 전자에는 단일선과 이중선 결합, 수직으로 반으로 자른 상자와 같은 더 많은 그리기 문자가 있으며, 둘 다 CP850에서는 일부 악센트 문자로 대체되었습니다.

$ $ iconv -f cp437 -t utf8 < input.txt | head -10
█████████████████████████████████▀▀▀▀▀▀▀▀██▀▀▀▀▀▀▀▀████████████████████████████
██████████████████████▀▀▀▀ ▄▄▄▄  ▄█▓▓▓▓█▌  ▄█▓▓▓▓█▄▄ ▀█████████████████████████
███████████████▀▀ ▄▄▄▄▄▓█▓▓▓▒▒▐▌▐▓▓▒▒▒▒▓█▌▐█▓▒▒▒▒▒▒▀█  ▄▄▄▄ ▀██████████████████
██████▀▀▀▀▀▀ ▄▄▄▀█▓██▓█▓▒▒▒▒░░░█ █▒░░░░▒▌░▓█▄░░░░░░▄█ █▓▒▒▀█▄ ▀▀▀██████████████
██▀ ▄▄▄▓▒▄ █▓▓██▌▐▒█▓▒██░░░░░░▄█░▀█▄▄▄▄▀░ ░ ▀▀██▒▓▓█▌▐▌▒▒░░▓█▌▐█▄▄▄▄▄ ▀▀███████
██ ███████ █▒▒▓▀▄▐░▓▒░█▀▄▄▄▀▀▀▀                ▀▀▀▀▀ ▐▓▓▓▒░▓█ █▓▒░░░▒▒▓▄ ▀█████
██ ▓▓▓████▌▐░░▄▀▄ ▄▄▀▀                   ░░  ░░░░     ▀▀▀█▒█ ▐█▄░░░░░░▒▓█ ▄▄ ██
██ ▒▒▒▓████ ▓▄▀▀ ▀   ░   ░ ░░█▓▄▌  ▄░░ ░░██░░████░░  ░         ▀▀██▄▄▒▓█▌▐█▀ ██
██ ░░░▒▓█▀          ░▒░  ░░░▒▓▒▓█ ▐▓▒░░▒▒▓█░░▓▓█▓░░█▓█▓ ▐▓░        ▀▀▀█▓ ██░ ██
██ ▄▄▀▀    ▄▄▄█▓░  ░▒▓░ ░▒▓▒▓▒░▒▓ ▓▒▓▒░▓▓▒▓▒▒▒▒▓▒▒▒▓▒▓▒▌ ▀▄▄█▓███         ▀█ 

(물론 SE에서는 그다지 좋아 보이지는 않지만 요점은 알 수 있습니다.)

관련 정보