2017-11-07 26 views
1

値-110(およびその他の負の値)を含むバイト[]があります。それを文字列に変換すると、 '(一重引用符)を表示する必要があります。現在、疑問符(?)を取得していますHTMLへのJava文字エンコーディングISO-8859-1

'は、this pageに記載されている特殊なASCII文字#146に揃えられていますが、今は-110または146(-110 + 256)とa '値である。私も納得しました。どんなアドバイスも大歓迎です。

byte[] b = {-110,84}; 
System.out.println(new String(b, Charset.forName("Windows-1252"))); //Displays ?T . The desired output should be ’T 
System.out.println(new String(b, Charset.forName("UTF-8"))); //Displays ?T . The desired output should be ’T 
System.out.println(new String(b, Charset.forName("ISO-8859-1"))); //Displays ?T . The desired output should be ’T 
+0

あなたのコンソールはおそらくその文字を印刷できません。あなたのコードを試してみると、最初の変種でうまく動作します。 – assylias

+0

あなたのリンクは機能しませんが、[U + 0092](http://www.fileformat.info/info/unicode/char/92/index.htm)は私用文字です。 ASCIIには127以上の文字は含まれていないことに注意してください。「特殊ASCII」はありません。あなたが望むキャラクターのように見えます(あなたがペーストしたもの)はU + 2019です。これはISO-8859-1の一部ではありません。 –

+0

あなたが今リンクしているページは、「ISO-8859-1では、128から159までの文字は定義されていません。これは事実ではありません.ISO-8859-1には当てはまりますが、ISO-8859-1には当てはまりません。 ([Wikipedia](https://en.wikipedia.org/wiki/ISO/IEC_8859-1)を参照してください)あなたがリンクしたページはあまり明確ではありませんが、あなたが見ている部分がWindows-あなたのコンソールはそれをサポートしていません。 –

答えて

1

ジョンスキートは彼の返事で指摘するように応答のおかげで、入力データのWindows-1252およびWindowsのコマンドラインを認識するために必要なJavaプログラムは、いずれかのコードページに設定されませんでした。 Windowsの-1252にコマンド・ライン・コードページを設定

は、デフォルトは次のパラメータ

を追加することによって行われたとして、Windows-1252を使用するJavaプログラムを開始

chcp 1252 

を実行することによって行われていました

-Dfile.encoding="Windows-1252" 
関連する問題