2

重複の可能性: Java で Scanner を使用して漢字を正しく読み取るにはどうすればよいですか?

入力ファイル名に日本語の文字が含まれている可能性があり、スキャナーを使用してファイル名を読み取ろうとしています。

Scanner sc = new Scanner(System.in,"utf-8");
System.out.println("Encoding is :" + Charset.defaultCharset());

System.out.println("Enter the path:");
inputFilePath = sc.nextLine();

私の入力が例えば - 漢字の場合

ファイル名を印刷すると、出力は

Encoding is :UTF-8
Input File Path:漢字

私も試しましたが、

byte[] jis = sc.nextLine().getBytes("Shift_JIS");
System.out.println(new String(jis));

そして私の出力は

Input File Path:??��??�\

どうすればこれを修正できますか?

4

3 に答える 3

3

あなたのコードは正しいです。唯一の問題は、あなたが読んutf-8でから変換してShift_JISジャンク文字を出力することです。

これを使ってみましたか。

Scanner sc = new Scanner(System.in,"utf-8");
System.out.println("Encoding is :" + Charset.defaultCharset());

System.out.println("Enter the path:");
String inputFilePath = sc.nextLine();
System.out.println("Input path:" + new String(inputFilePath.getBytes("utf-8")));

お役に立てれば !!

于 2013-02-20T07:33:19.060 に答える
0

中国語に対するこの回答

すべての文字列は、すでに (概念的に) 漢字を含む一連の文字です。エンコーディングは、割り当てに必要のないバイトに変換する必要がある場合にのみ含まれます。文字列のハッシュコードを使用するだけです。実際、HashMap を作成すると、まさにそれが舞台裏で行われます。

于 2013-02-20T07:21:02.607 に答える
0

EclipseデフォルトでUTF-8に設定されているコンソールから読み取っています。データを読み取るには、コンソールのエンコーディングを日本語でサポートされているエンコーディングに変更する必要があります。

実行構成で、エンコードを日本語でサポートされているエンコードに変更し、再試行してください。

ここに画像の説明を入力

于 2013-02-20T07:30:59.283 に答える