Character-Encoding
查看包含 DOS 文本(方框圖字元、CRLF 行終止符)和轉義序列的文件
我在從某個廢棄軟體網站下載的舊 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 終端仿真器。