2017-09-19 4 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(); 
    } 
} 

TitleBoxJComboBox, FirstNameField, LastNameField이며 ClassFieldJTextField 년대이다. TextAreaJTextArea입니다.

"Mr." TitleBox에 "남자"FirstNameField에서 "리"LastNameFieldClassField에서 "7"은, 내가 출력을 얻을 : 텍스트 영역에서

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

을하지만, 파일에, IDCard.txt, 나는 얻을 출력 :

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

textToSet 대중 범위에 정의 된 String 변수입니다 ... 누군가가 올바른 방향으로 날 포인트? writeUTF() 코드에 문제가 있습니까?

답변

6

writeUTF 메서드는 문자열 작성 시간 (2 바이트, 0-65535)에 대한 헤더 데이터 (소위 중국어 문자)를 포함합니다. readUTF을 사용하여 해당 데이터를 올바르게 읽을 수 있지만 일반적인 텍스트 작성을위한 것은 아닙니다.

그냥 보통의 BufferedWriter.write(String str)을 사용하여 텍스트를 작성하십시오.

+0

효과가있었습니다. 명확하고 간결한 대답에 감사드립니다. – AbhigyanC

관련 문제