首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能从ASCII转换。为什么?

不能从ASCII转换。为什么?
EN

Unix & Linux用户
提问于 2022-04-21 10:06:49
回答 2查看 668关注 0票数 0

我有这份文件。

如果我用F3在“总指挥官”中打开它,然后按下S,就会显示正确的内容。

我尝试在bash中使用iconv做同样的事情:

iconv -f ASCII -t UTF8 input.txt

但我得到了这个

iconv: illegal input sequence at position 0

如果我来自CP850CP852

iconv -f CP850 -t UTF8 input.txt

iconv -f CP852 -t UTF8 input.txt

输出中将有一些不需要的字符:

̦ŮŢŮ

如何在Linux终端中获得所请求的内容?当显示ASCII (DOS-charset)时,在总指挥官中使用什么编码?还是iconv中的一个bug?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2022-04-21 10:41:01

它不是ASCII,所以您不能将文件从ASCII转换为其他任何东西。经过一些调查,编码CP437似乎提供了一个“良好”的视觉表现。作为将来的参考,这是我是如何决定这个的。

代码语言:javascript
复制
# 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.$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
EN

Unix & Linux用户

发布于 2022-04-21 10:43:16

ASCII是一种7位编码.,您的文件以一串字节( 0xdb )开始,这是一个8位的值.

如果它是(部分)图形化的,它可能是8位DOS代码页之一。我试着使用CP850和CP437,而后者似乎给出了一幅合理的画面。

有道理,因为页437是最初的IBM代码页.拉850拉丁文-1。前者具有更多的绘图字符,比如组合的单行/双线,以及垂直减半的框,这两个字符在CP850中都被一些重音字母所取代。

代码语言:javascript
复制
$ $ iconv -f cp437 -t utf8 < input.txt | head -10
█████████████████████████████████▀▀▀▀▀▀▀▀██▀▀▀▀▀▀▀▀████████████████████████████
██████████████████████▀▀▀▀ ▄▄▄▄  ▄█▓▓▓▓█▌  ▄█▓▓▓▓█▄▄ ▀█████████████████████████
███████████████▀▀ ▄▄▄▄▄▓█▓▓▓▒▒▐▌▐▓▓▒▒▒▒▓█▌▐█▓▒▒▒▒▒▒▀█  ▄▄▄▄ ▀██████████████████
██████▀▀▀▀▀▀ ▄▄▄▀█▓██▓█▓▒▒▒▒░░░█ █▒░░░░▒▌░▓█▄░░░░░░▄█ █▓▒▒▀█▄ ▀▀▀██████████████
██▀ ▄▄▄▓▒▄ █▓▓██▌▐▒█▓▒██░░░░░░▄█░▀█▄▄▄▄▀░ ░ ▀▀██▒▓▓█▌▐▌▒▒░░▓█▌▐█▄▄▄▄▄ ▀▀███████
██ ███████ █▒▒▓▀▄▐░▓▒░█▀▄▄▄▀▀▀▀                ▀▀▀▀▀ ▐▓▓▓▒░▓█ █▓▒░░░▒▒▓▄ ▀█████
██ ▓▓▓████▌▐░░▄▀▄ ▄▄▀▀                   ░░  ░░░░     ▀▀▀█▒█ ▐█▄░░░░░░▒▓█ ▄▄ ██
██ ▒▒▒▓████ ▓▄▀▀ ▀   ░   ░ ░░█▓▄▌  ▄░░ ░░██░░████░░  ░         ▀▀██▄▄▒▓█▌▐█▀ ██
██ ░░░▒▓█▀          ░▒░  ░░░▒▓▒▓█ ▐▓▒░░▒▒▓█░░▓▓█▓░░█▓█▓ ▐▓░        ▀▀▀█▓ ██░ ██
██ ▄▄▀▀    ▄▄▄█▓░  ░▒▓░ ░▒▓▒▓▒░▒▓ ▓▒▓▒░▓▓▒▓▒▒▒▒▓▒▒▒▓▒▓▒▌ ▀▄▄█▓███         ▀█ 

(在SE上,这看起来不太好,但你明白了。)

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/699845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档