我的问题很简单:
new InputStreamReader(is, "UTF-8");
使β和・看起来像问号。
我应该使用哪个编码器来正确查看这些字符?
我的问题很简单:
new InputStreamReader(is, "UTF-8");
使β和・看起来像问号。
我应该使用哪个编码器来正确查看这些字符?
您应该使用您的输入数据真正使用的任何编码。我们不能告诉您,尽管如果您提供用于表示这些字符的字节,我们可能会提出一些可能性。
虽然您有时可以应用一些启发式方法来猜测编码,但您确实应该根据数据的来源来了解它。在这种情况下,无论您的输入是什么,您都没有给我们任何提示 - 如果它来自网络响应,您应该查看Content-Type
响应的标题。如果它来自文件,它实际上取决于生成该文件的内容。
编辑:现在我们知道这是一个网络响应,当然,您不必自己进行标题潜水。您可以使用 HTTP 客户端库,它会为您下载数据并将其解码为字符串本身。
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
因此,在您的第二个参数中尝试所有这些字符串,直到您获得所需的编码。
只需添加其他人所说的最终结果将是在 Java 中的 UTF-8,这将能够处理您拥有的任何字符。但是,这里的问题是您如何阅读它,这取决于文件的写入编码,显然不是 UTF-8。