如何确定文本文件的编码表

时间:2010-11-23 10:58:37

标签: text unicode encoding character-encoding

我有.txt.java个文件,我不知道如何确定文件的编码表(Unicode,UTF-8,ISO-8525,...)。是否存在任何程序来确定文件编码或查看编码?

6 个答案:

答案 0 :(得分:48)

如果您使用的是Linux,请尝试file -i filename.txt

$ file -i vol34.tex 
vol34.tex: text/x-tex; charset=us-ascii

供参考,这是我的环境:

$ which file
/usr/bin/file
$ file --version
file-5.09
magic file from /etc/magic:/usr/share/misc/magic

某些file版本(例如OS X / macOS上的文件-5.04)的命令行开关略有不同:

$ file -I vol34.tex 
vol34.tex: text/x-tex; charset=us-ascii
$ file --mime vol34.tex
vol34.tex: text/x-tex; charset=us-ascii

另外,看看here

答案 1 :(得分:24)

使用Notepad ++打开文件,将在右下角看到编码表名称。在菜单编码中,您可以更改编码表并保存文件。

答案 2 :(得分:10)

您无法从文本文件中可靠地检测到编码 - 您可以做的是创建一个 通过搜索非ascii字符并尝试确定它是否为a来进行有根据的猜测 unicode组合,在您正在解析的语言中使用sens。

答案 3 :(得分:4)

question and the selected answer。这样做没有确定的方法。最多,您可以排除问题。 UTF编码你不太可能得到误报,但8位编码很难,特别是如果你不知道起始语言。目前没有工具能够处理来自Mac,Windows,Unix的所有常见8位编码,但所选答案提供的算法方法应该适用于某些编码子集。

答案 4 :(得分:1)

在文本文件中,没有保存编码的标头左右。您可以尝试尝试猜测编码的linux / unix命令find

file -i unreadablefile.txt

或某些系统

file -I unreadablefile.txt

但是这通常会给你text/plain; charset=iso-8859-1虽然文件不可读(神秘的字形)。

这是我在安装iconv之后为不可读文件找到正确文件编码然后将其翻译为utf8的方法。首先,我尝试了所有编码,显示(grep)一行包含 www。(网站地址)的字词:

for ENCODING in $(iconv -l); do echo -n "$ENCODING "; iconv -f $ENCODING -t utf-8 unreadablefile.txt 2>/dev/null| grep 'www'; done | less

最后一个命令行显示测试的文件编码,然后显示已翻译/转码的行。

有些线条显示可读和一致(一次一种语言)结果。我尝试了其中一些,例如:

ENCODING=WINDOWS-936; iconv -f $ENCODING -t utf-8 unreadablefile.txt -o test_with_${ENCODING}.txt

在我的情况下,它是一个中文Windows编码,现在可读(如果你懂中文)。

答案 5 :(得分:0)

是否存在用于确定文件编码或查看编码的程序?

在我撰写本文时,这个问题已有10年历史了,答案仍然是“否”-至少不是很可靠。不幸的是,并没有太大的进步。我最近的经验表明,file -I命令非常hit-or-miss。例如,在macOS 10.15.6上检查 文本文件 时:

% file -i somefile.asc
somefile.asc: application/octet-stream; charset=binary

somefile.asc是一个文本文件。其中所有字符均使用 UTF-16 Little Endian 编码。我怎么知道的我使用了BBedit-胜任的文本编辑器。确定文件中使用的编码无疑是一个难题,但是...?