1

私の問題はかなり単純です:

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

βと・をクエスチョンマークのように見せます。

これらの文字を正しく表示するには、どのエンコーダーを使用する必要がありますか?

4

3 に答える 3

5

入力データが実際に含まれているエンコーディングを使用する必要があります。これらの文字を表すためのバイトを指定すると、いくつかの可能性を提案できる場合がありますが、そのことはわかりません。

いくつかのヒューリスティックを適用してエンコーディングを推測できる場合もありますが、データの出所に基づいて実際にそれを知る必要があります。この場合、入力内容が何であれ、ヒントを提供していません。Web応答からのものである場合Content-Typeは、応答のヘッダーを確認する必要があります。それがファイルからのものである場合、それは実際にはそのファイルを作成したものに依存します。

編集:これがWeb応答であることがわかったので、もちろん、ヘッダーダイビングを行う必要はありません。データをダウンロードして文字列自体としてデコードするHTTPクライアントライブラリを使用できます。

于 2012-07-04T06:26:03.543 に答える
4

Java5.0Charsetのドキュメントから引用。

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番目のパラメータでこれらの文字列をすべて試してください。

于 2012-07-04T06:51:41.483 に答える
0

他の人が言ったことに加えて、Javaでの最終結果はUTF-8になり、それはあなたが持っているどんな文字でも処理できるようになるでしょう。ただし、ここでの問題は、どのように読み取るかです。これは、ファイルがどのエンコーディングで記​​述されているかによって異なります。これは、明らかにUTF-8ではありません。

于 2012-07-04T06:54:29.477 に答える