Character-Encoding

查看包含 DOS 文本(方框圖字元、CRLF 行終止符)和轉義序列的文件

  • August 17, 2015

我在從某個廢棄軟體網站下載的舊 dos 遊戲存檔中偶然發現了一個奇怪的文本文件。

文本文件名為WHY_NOT.TXT. 我假設該文件是來自一群人的某種.NFO文件……嗯……“解放”了遊戲。

使用 cat 或更少甚至nfoview查看文件時我運氣不佳。

問題是:如何按預期查看文件的內容?

來自 nfoview 的輸出:

資訊視圖

這是 cat 和 less 的輸出。我使用螢幕截圖是因為我擔心編碼會被瀏覽器和網際網路弄得更亂。

無貓

文件輸出:

$ file WHY_NOT.TXT 
WHY_NOT.TXT: ISO-8859 text, with CRLF line terminators, with escape sequences

這是使用創建的原始十六進制轉儲中的文件xxd -p WHY_NOT.TXT

1b5b34306d0d0a1b5b33396d1b5b34306d0d0a1b5b33396d1b5b34431b5b
303b33346ddb1b5b316ddbdfdfdfdfdfdf201b5b303b33346ddb1b5b316d
dbdfdfdfdfdfdb201b5b34346d201b5b34306ddbdfdfdfdfdfdb201b5b30
3b33346ddb1b5b316ddbdfdfdbdfdfdb201b5b303b33346ddb1b5b316ddb
1b5b36431b5b34346d201b5b34306ddbdfdfdfdfdfdb201b5b303b33346d
db1b5b316ddbdfdfdb201b5b303b33346ddb1b5b316ddb201b5b303b3334
6ddb1b5b316ddbdfdfdfdfdfdc0d0a202020201b5b303b33346ddb1b5b31
6ddbdcdcdcdcdcdc201b5b303b33346ddb1b5b316ddbdcdcdcdc1b5b3434
6ddc1b5b34306ddb201b5b34346d201b5b34306ddbdcdcdcdc1b5b34346d
dc1b5b34306ddb201b5b303b33346ddb1b5b316ddb201b5b303b33346ddb
1b5b316ddb201b5b303b33346ddb1b5b316ddb201b5b303b33346ddb1b5b
316ddb1b5b36431b5b34346d201b5b34306ddbdcdcdcdc1b5b34346ddc1b
5b34306ddb201b5b303b33346ddb1b5b316ddb201b5b303b33346ddb1b5b
316ddb201b5b303b33346ddb1b5b316ddb201b5b303b33346ddb1b5b316d
db202020201b5b303b33346ddb1b5b316ddb0d0a1b5b3130431b5b303b33
346ddc1b5b316ddb201b5b303b33346ddb1b5b316ddb1b5b37431b5b3434
6d201b5b34306ddb202020201b5b303b33346ddc1b5b316ddb201b5b303b
33346ddb1b5b316ddb202020201b5b303b33346ddb1b5b316ddb201b5b30
3b33346ddb1b5b316ddb1b5b36431b5b34346d201b5b34306ddb20202020
1b5b303b33346ddc1b5b316ddb201b5b303b33346ddb1b5b316ddb201b5b
303b33346ddb1b5b316ddb201b5b303b33346ddb1b5b316ddb201b5b303b
33346ddb1b5b316ddb202020201b5b303b33346ddb1b5b316ddb0d0a2020
20201b5b303b33346ddc1b5b316ddcdcdcdcdc1b5b34346ddc1b5b34306d
db201b5b303b33346ddb1b5b316ddb1b5b37431b5b34346d201b5b34306d
db202020201b5b34346d201b5b34306ddb201b5b303b33346ddb1b5b316d
db202020201b5b303b33346ddb1b5b316ddb201b5b303b33346ddb1b5b31
6ddbdcdcdcdcdc201b5b34346d201b5b34306ddb202020201b5b34346d20
1b5b34306ddb201b5b303b33346ddb1b5b316ddb201b5b303b33346ddb1b
5b316ddbdc1b5b34346ddc1b5b34306ddb201b5b303b33346ddb1b5b316d
dbdcdcdcdc1b5b34346ddc1b5b34306ddf0d0a1b5b306d1b5b323535440d
0a

您可以通過將該字元串複製到文件來重新創建原始文件,然後使用xxd -r -p filename. 這是 md5sum 以確保您擁有相同的原始文件:e64665b3f6e5fb3ec71c8fbf6cc63875

那是 MSDOS 字元集。

recode cp437..u8在 UTF8 終端中嘗試。

它給:

██▀▀▀▀▀▀ ██▀▀▀▀▀█  █▀▀▀▀▀█ ██▀▀█▀▀█ ██       █▀▀▀▀▀█ ██▀▀█ ██ ██▀▀▀▀▀▄
██▄▄▄▄▄▄ ██▄▄▄▄▄█  █▄▄▄▄▄█ ██ ██ ██ ██       █▄▄▄▄▄█ ██ ██ ██ ██    ██
     ▄█ ██        █    ▄█ ██    ██ ██       █    ▄█ ██ ██ ██ ██    ██
▄▄▄▄▄▄▄█ ██        █     █ ██    ██ ██▄▄▄▄▄  █     █ ██ ██▄▄█ ██▄▄▄▄▄▀

在顏色。

關於顏色的一些線索:

這些ESC[0;33m;東西是用於向控制台輸出添加顏色的ANSI 轉義序列。ascii 中的 ‘ESC’ 是十進制 27 或八進制 33,所以你可以將它傳遞給 shell\\033看看我的意思:

echo -e "\\033[0;32mgreen \\033[1mbright \\033[44mon blue\\033[0m and reset..."

記住,\\033是ESC。看起來熟悉?其中很多只設置背景,有些文件是空格——因此是風格化的 SPAMLAND。

請注意,這些序列不適用於 MS windows 終端仿真器。

引用自:https://unix.stackexchange.com/questions/63474