擅长:python、mysql、java
<p>我尝试这样一种启发式方法(假设您已经排除了ASCII和UTF-8):</p>
<ul>
<li>如果0x7f到0x9f根本就没有出现,那么很可能是ISO-8859-1,因为这些是很少使用的控制代码。</li>
<li>如果0x91到0x94出现在lot中,那么很可能是Windows-1252,因为这些是“智能引号”,是该范围内最有可能在英语文本中使用的字符。更确切地说,你可以找对。</li>
<li>否则,就是MacRoman,特别是当你看到大量的0xd2到0xd5(这就是MacRoman中的印刷引号)。</li>
</ul>
<p>旁注:</p>
<blockquote>
<p>For files like Java source where no
such facility exists internal to the
file, you will put the encoding before
the extension, such as
SomeClass-utf8.java</p>
</blockquote>
<p><strong>不要这样做!!</strong></p>
<p>Java编译器希望文件名与类名匹配,因此重命名文件将使源代码不可编译。正确的做法是猜测编码,然后使用<a href="http://download.oracle.com/javase/1.4.2/docs/tooldocs/windows/native2ascii.html" rel="nofollow noreferrer">^{<cd1>}</a>工具将所有非ASCII字符转换为<a href="http://en.wikibooks.org/wiki/Java_Programming/Syntax/Unicode_Escape_Sequences" rel="nofollow noreferrer">Unicode escape sequences</a>。</p>