人生最悪の忘れ物

文字コードの変換で困っています。

例えば、標準入力で「あいう」と入力して、その文字列を
UTF-8に変換して出力したいのですが、うまくいきません。

サイトにはbyteに変換してから入れると書いていましたが、
よくわかりませんでした。

宜しくお願いします。

以下、今できているソースです。
(ソースコード)
import java.io.*;

public class ChangeCord
{
public static void main( String[] args )
{
try
{
System.out.println("何か日本語を入力してください。");

BufferedReader br = new BufferedReader( new InputStreamReader(System.in, "UTF-8"));

String str = br.readLine();

System.out.println("文字コードUTF-8に変換した結果");
System.out.println(str);

}catch (Exception e) {
System.out.println("エラー");
}

}
}

(出力結果)
何か日本語を入力してください。
あいう
文字コードUTF-8に変換した結果
??????

以上です。

A 回答 (1件)

入力側の文字コードは何ですか。


質問で書かれているソースだと標準入力がUTF-8で書かれているとみなして読み込み、システム標準のエンコード(Windowsだと概ねSJIS)で文字出力するようになっています。

Javaの文字列は内部的にはUTF-16です。文字列入出力クラスは、システム標準コードで書かれた文字列をJava文字列に変換して取り込み、あるいはJava文字列をシステム標準コードに変換して出力します。
別のエンコード(この場合はUTF-8)で出力する場合、普通は出力側クラスでエンコードを指定することで実現できます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報