0

我在 Netbeans IDE 中创建了一个 java 小程序。我的小程序创建一个 html 文件。这包括一个字符串。

//Other code
File htmlTemplateFile = new File("template.html");
    String htmlString = FileUtils.readFileToString(htmlTemplateFile);
    String title = "Title";

    htmlString = htmlString.replace("$title", title);

     File newTextFile = new File("paragraph.txt");
    FileUtils.write(newTextFile, "Contents", "UTF-8");
    FileWriter pw = new FileWriter(newTextFile);

     pw.write("Δεῦτε");
    pw.close();
    String paragraph = new Scanner( new File("paragraph.txt") ).useDelimiter("\\A").next();


    htmlString = htmlString.replace("$paragraph", paragraph);

    File newHtmlFile = new File("example.html");
    FileUtils.writeStringToFile(newHtmlFile, htmlString);

我的 template.html 是:

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>$title</title>
</head>
<body>
<p>$paragraph
</p>
</body>
</html>

当我从 Netbeans 运行它并在打开它时创建 example.html 文件时,我看到

Δεῦτε(它是古希腊字符)在我的浏览器中,但是当我创建 applet.jar 并运行 .jar 时,它会创建相同的 example.html 文件,但是当我在浏览器中打开它时,我会看到类似的其他内容:

xC4xE5?xF4xE5

一些未读字符。

4

1 回答 1

1

您的代码使用FileWriter. 这将始终使用平台默认编码 - 并且在 Netbeans 中运行它和作为小程序运行它之间的检测可能会有所不同。

我强烈建议您在读写时更改代码以指定编码:

  • 使用OutputStreamWriter包装FileOutputStream而不是FileWriter
  • Scanner在构造函数中指定字符集名称
于 2013-10-18T13:47:38.673 回答