我想将日语字母写到Java创建的HTML文件中。为此,我创建了一个FileOutputStream
,并在目标位置(如桌面文档)创建了一个.html文档。我在我的Java代码中写了一些HTML代码,因此它可以正确翻译:
package main;
import java.io.DataOutputStream;
public class Streamer {
static String address;
static String output;
public Streamer() {}
static String html_begin = "<!DOCTYPE html><html><body>";
static String header = "<head><meta lang=\"japanese\" charset=\"unicode\"></head>";
static String html_end = "</html></body>";
public static void output(String s, String s2) {
address = s2;
output = s;
setAddress(s2);
try
{
DataOutputStream stream = new DataOutputStream(new java.io.FileOutputStream(address));
stream.writeBytes(html_begin);
stream.writeBytes(header);
stream.writeBytes(output);
stream.writeBytes(html_end);
stream.close();
}
catch (java.io.IOException localIOException) {}
}
.....}
即使将字符集声明为Unicode,将语言声明为日语,创建的文件也向我显示了一些随机符号...
有关信息:该代码将JTextArea
(String
)处的给定代码直接转换为嵌入HTML的文档。给定的地址作为FileOutputStream
的参数只是创建的文件应出现的目的地。
方法setAdress
只是这些地址的设置方法。
答案 0 :(得分:3)
请勿使用DataOutputStream
编写文本文件。使用Writer
编写文本文件。更好的是,使用PrintWriter
。
要编写带有日语字符的文本文件,您需要将文件编码为支持日语字符的字符集,例如UTF-8或UTF-16。
此外,您应该使用try-with-resources。
try (PrintWriter out = new PrintWriter(Files.newBufferedWriter(Paths.get(address), StandardCharsets.UTF_16))) {
out.println(html_begin);
out.println(header);
out.println(output);
out.println(html_end);
} catch (IOException e) {
e.printStackTrace();
}
Java 7之前的版本:
try (PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(address), "UTF-16")))) {
out.println(html_begin);
out.println(header);
out.println(output);
out.println(html_end);
} catch (IOException e) {
e.printStackTrace();
}