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