gpt4 book ai didi

java - 在 Java 中使用 DataOutputStream 给出了一些中文输出

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:39:17 25 4
gpt4 key购买 nike

我今天在 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 是一个 JComboBoxFirstNameFieldLastNameFieldClassFieldJTextField 的。 TextArea 是一个 JTextArea

当我选择“先生”时在 TitleBox 中,在 FirstNameField 中键入“Man”,在 LastNameField 中键入“Ly”,在 ClassField 中键入“7th”,我得到输出:

       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 - 在 Java 中使用 DataOutputStream 给出了一些中文输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46294062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com