我今天在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();
}
}
TitleBox
是JComboBox
,FirstNameField
,LastNameField
,ClassField
是JTextField
&#39}。 TextArea
是JTextArea
。
当我选择" Mr。"在TitleBox
中输入" Man"在FirstNameField
," Ly"在LastNameField
和"第7"在ClassField
中,我得到了输出:
Student Information
Name : Mr. Man Ly
Class : 7th
在TextArea中,但在文件IDCard.txt中,我得到了输出:
㠀†††匠畴敤瑮䤠普牯慭楴湯上浡॥›牍慍祌䌊慬獳㨉㜠桴
textToSet
是在公共范围内定义的String
变量...有人能指出我正确的方向吗? writeUTF()
代码有问题吗?
答案 0 :(得分:6)
writeUTF
方法包括标题数据(您所谓的中文字符),表示它要写入的字符串的长度(2个字节,所以0-65535)。您只能使用readUTF
正确读取该数据,而不是用于一般文本编写。
只需使用常规BufferedWriter.write(String str)
来编写文本。