2

我正在使用以下代码将 Velocity 模板输出到文件:

FileWriter fileWriterOut = new FileWriter(outFile);
logger.debug("encoding " + fileWriterOut.getEncoding());
fileWriterOut.write(template.getStringWriter().toString());
fileWriterOut.close();

问题是:

outFile 部署在非 UTF-8 应用服务器中,使用默认编码 (iso-xxxx) 编写。

您可以使用 fileWriterOut.getEncoding() 进行验证

似乎 FileWriter 类中的任何方法都不能设置另一种编码。

写入文件时如何强制使用 UTF-8?

4

2 回答 2

4

将 a与 aFileOutputStream结合使用OutputStreamWriter

final OutputStream out = new FileOutputStream(...);
final Writer writer 
    = new OutputStreamWriter(out, Charset.forName("UTF-8"));
于 2013-06-14T13:50:31.870 回答
0

我找到了一种方法来做到这一点,我不确定这是最方便的方法,但它可以正常工作。

Writer out = null;
try {
    out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"));
    out.write(template.getStringWriter().toString());
} 
catch ...
finally
{
    try {
        out.close();
    } catch...
}
于 2013-06-14T13:52:51.947 回答