在 Java 中使用 DataOutputStream 提供了一些中文输出
Using DataOutputStream in Java gives some Chinese output
我今天在 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
的。 TextArea
是 JTextArea
.
当我在 TitleBox
中选择 "Mr." 时,在 FirstNameField
中键入 "Man",在 LastNameField
中键入 "Ly",在 ClassField
,我得到输出:
Student Information
Name : Mr. Man Ly
Class : 7th
在 TextArea 中,但在文件中,IDCard.txt,我得到输出:
㠀†††匠畴敤瑮䤠普牯慭楴湯上浡॥›牍慍祌䌊慬獳㨉㜠桴
textToSet
是在 public 范围内定义的 String
变量...有人可以指出我正确的方向吗? writeUTF()
代码有问题吗?
writeUTF
方法包括 header 数据(你所谓的汉字)关于它要写多长时间的字符串(2 个字节,所以 0-65535)。您只能使用 readUTF
正确读取该数据,它不适用于一般的文本书写。
只需使用常规 BufferedWriter.write(String str)
来代替编写文本。
我今天在 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
的。 TextArea
是 JTextArea
.
当我在 TitleBox
中选择 "Mr." 时,在 FirstNameField
中键入 "Man",在 LastNameField
中键入 "Ly",在 ClassField
,我得到输出:
Student Information
Name : Mr. Man Ly
Class : 7th
在 TextArea 中,但在文件中,IDCard.txt,我得到输出:
㠀†††匠畴敤瑮䤠普牯慭楴湯上浡॥›牍慍祌䌊慬獳㨉㜠桴
textToSet
是在 public 范围内定义的 String
变量...有人可以指出我正确的方向吗? writeUTF()
代码有问题吗?
writeUTF
方法包括 header 数据(你所谓的汉字)关于它要写多长时间的字符串(2 个字节,所以 0-65535)。您只能使用 readUTF
正确读取该数据,它不适用于一般的文本书写。
只需使用常规 BufferedWriter.write(String str)
来代替编写文本。