我想使用以下代码从jar文件创建UTF-8文件:
public class UTF8 {
public static void main(String[] args) throws Exception {
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(
"utf8.txt"), "UTF8"));
out.write("Look at this BASTÖÖÜÜÄÄ!");
}
}
这段代码使用eclipse非常有效。但是,如果我将它打包到一个jar文件,它使用平台依赖文件编码(例如在Windows上为Cp1252)。我该怎么办呢?
答案 0 :(得分:4)
在Launch4j的JRE选项卡上的JVM选项字段中(加载配置文件后),输入以下内容:
-Dfile.encoding=UTF8
或者,可以在应用程序的ini文件中指定相同的内容 - 请参阅launch4j文档:
http://launch4j.sourceforge.net/docs.html#Additional_jvm_options
答案 1 :(得分:2)
"UTF8"
应为"UTF-8"
。
此外OutputStreamReader(outputStream, encosingString)
会引发您应该抓住的UnsupportedEncodingException
。
重大错误:永远不会捕获(或传递给主要)通用Exception
public static void main(String[] args) throws Exception {}
这使您无法看到真正的异常是什么以及发生了什么。
答案 2 :(得分:1)
调试编码问题时的经验法则:如果在字符串文字中有非us-ascii字母,请尝试用Unicode转义符替换它们(即BAST\u00d6\u00d6\u00dc\u00dc\u00c4\u00c4
)。如果问题消失,则源/编译器编码不匹配。
例如,如果您的源编码是Windows-1252而编译器编码是UTF-8,则可能会出现您描述的行为。
答案 3 :(得分:0)
请尝试"UTF-8"
。
答案 4 :(得分:0)
我遇到了同样的问题..我解决了它 java -Dfile.encoding = UTF8 -jar CAP.jar(其中CAP是JAR文件的名称)
我发了一个批处理文件。打开文本文件,写上面的行并将其保存为.bat,它应该可以工作