2017-09-19 9 views
2

私は今日はJavaでDataOutputStreamを使用していましたが、私には中国語の出力があり、それは絶対に期待したものではありませんでした。JavaでDataOutputStreamを使用すると、いくつかの中国語の出力が得られます

private void generateButtonActionPerformed(java.awt.event.ActionEvent evt) { 
    textToSet="  Student Information"; 
    textToSet=textToSet+"\nName\t: "+TitleBox.getSelectedItem()+" "+FirstNameField.getText()+" "+LastNameField.getText(); 
    textToSet=textToSet+"\nClass\t: "+ClassField.getText(); 
    TextArea.setText(textToSet); 
} 

private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {           
    try{ 
     File f=new File("C:\\Users\\username\\Desktop\\ID Card.txt"); 
     DataOutputStream fs=new DataOutputStream(new BufferedOutputStream(new FileOutputStream(f))); 
     fs.writeUTF(textToSet); 
     Desktop d=Desktop.getDesktop(); 
     d.open(f); 
     fs.close(); 
    } 
    catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 

TitleBoxJComboBoxFirstNameFieldLastNameFieldあり、そしてClassFieldJTextField年代です。 TextAreaJTextAreaです。

「Mr.」を選択すると、 TextArea内

 Student Information 
Name : Mr. Man Ly 
Class : 7th 

が、ファイル、IDCard.txtでは、私が取得:FirstNameFieldTitleBoxで、タイプ「男」、ClassFieldLastNameFieldと「7」における「Lyが」、私は出力を得ます出力:

㠀†††匠畴敤瑮䤠普牯慭楴湯上浡॥›牍‮慍祌䌊慬獳㨉㜠桴 

textToSetは公共のスコープで定義されたString変数です...誰かが正しい方向に私を指すことができますか? writeUTF()コードに問題がありますか?

答えて

6

writeUTFメソッドには、文字列の書き込み時間(2バイト、0-65535)に関するヘッダーデータ(いわゆる漢字)が含まれています。 readUTFを使用すると、そのデータを正しく読み取ることができますが、これは一般的なテキスト書き込みのためのものではありません。

代わりにテキストを書くには通常のBufferedWriter.write(String str)を使用してください。

+0

はっきりと簡潔な答えをありがとうございます。 – AbhigyanC

関連する問題