1

我的问题很简单:

new InputStreamReader(is, "UTF-8");

使β和・看起来像问号。

我应该使用哪个编码器来正确查看这些字符?

4

3 回答 3

5

您应该使用您的输入数据真正使用的任何编码。我们不能告诉您,尽管如果您提供用于表示这些字符的字节,我们可能会提出一些可能性。

虽然您有时可以应用一些启发式方法来猜测编码,但您确实应该根据数据的来源来了解它。在这种情况下,无论您的输入是什么,您都没有给我们任何提示 - 如果它来自网络响应,您应该查看Content-Type响应的标题。如果它来自文件,它实际上取决于生成该文件的内容。

编辑:现在我们知道这一个网络响应,当然,您不必自己进行标题潜水。您可以使用 HTTP 客户端库,它会为您下载数据并将其解码为字符串本身。

于 2012-07-04T06:26:03.543 回答
4

取自Java 5.0 Charset 文档

Charset     Description
US-ASCII    Seven-bit ASCII, a.k.a. ISO646-US, a.k.a. the Basic Latin block of the Unicode character set
ISO-8859-1  ISO Latin Alphabet No. 1, a.k.a. ISO-LATIN-1
UTF-8       Eight-bit UCS Transformation Format
UTF-16BE    Sixteen-bit UCS Transformation Format, big-endian byte order
UTF-16LE    Sixteen-bit UCS Transformation Format, little-endian byte order
UTF-16      Sixteen-bit UCS Transformation Format, byte order identified by an optional byte-order mark

因此,在您的第二个参数中尝试所有这些字符串,直到您获得所需的编码。

于 2012-07-04T06:51:41.483 回答
0

只需添加其他人所说的最终结果将是在 Java 中的 UTF-8,这将能够处理您拥有的任何字符。但是,这里的问题是您如何阅读它,这取决于文件的写入编码,显然不是 UTF-8。

于 2012-07-04T06:54:29.477 回答