为什么Java中的字符串转换为HTML文件时会出现其他字符?
我看过“类似”的问题,但没有找到我的答案。如果已经存在,请给我指一个 问题:将String/StringBuilder保存为HTML格式时,会在页面开头添加额外的字符,我不知道为什么。例如:为什么Java中的字符串转换为HTML文件时会出现其他字符?,java,html,tags,special-characters,Java,Html,Tags,Special Characters,我看过“类似”的问题,但没有找到我的答案。如果已经存在,请给我指一个 问题:将String/StringBuilder保存为HTML格式时,会在页面开头添加额外的字符,我不知道为什么。例如: ¬ítX<!DOCTYPE html> <html> 你还没有发布serializeDoc,所以我们真的不能说。但我要告诉你的是:你真的需要用文本文件跟踪你的字符集。以ascii、拉丁语-1、utf-8、utf-16等格式输出相同的文本将得到不同的文件大小和不同的结果。确保一致性的
’tX<!DOCTYPE html>
<html>
你还没有发布
serializeDoc
,所以我们真的不能说。但我要告诉你的是:你真的需要用文本文件跟踪你的字符集。以ascii、拉丁语-1、utf-8、utf-16等格式输出相同的文本将得到不同的文件大小和不同的结果。确保一致性的最佳方法是使用FileWriter和FileReader,您可以在其中声明字符集类型
--更新--
哎呀,哎呀,哎呀!您不希望在此处使用对象序列化。这将直接将java对象保存到文件中,使文件更难读取和手动调整。将字节写入FileOutputStream会更好,但正如我所说的,最好的解决方案是FileWriter,这样您就可以指定要保存的字符集。什么是
serializeDoc
?ObjectOutputStream执行Java序列化,这与写入文本不同。改为使用。添加serializeDoc()以实现可见性。它实际上只是使用常规序列化来保存文档,而不是添加任何字符。此外,特殊字符仅出现在第一行中。我会试试FileWriter,看看它是否有什么不同
public void saveToHTML(){
String fileName = "";
if (docName != null){
fileName += docName;
} else {
fileName += stdFileName;
}
fileName += "HTML.html";
String tempText = new String("<!DOCTYPE html>\n<html>\n\t<body>");
int tabCount = 3;
for (int oneSec = 0; oneSec < allSections.size(); oneSec++){
for (int onePar = 0; onePar < allSections.get(oneSec).getCountParagraphs(); onePar++){
tempText += (convertParToHTML(allSections.get(oneSec).getParagraph(onePar),
tabCount));
}
}
tempText += ("\n\t</body>\n</html>");
serializeDoc(fileName, tempText.toString());
}
/**
* Helper method to serialize files
*
* @param fileName name of the file to be saved with
* @param object object to be saved in the file
* @throws IOException
*/
private void serializeDoc(String fileName, Object object){
try {
FileOutputStream file = new FileOutputStream(fileName);
ObjectOutputStream out = new ObjectOutputStream(file);
out.writeObject(object);
out.close();
} catch (IOException e){
System.out.println("The file couldn't be created");
}
}