我的代码(Qwe.java)
public class Qwe {
public static void main(String[] args) {
System.out.println("тест привет");
}
}
其中
тестпривет
是俄语单词 QW.java,UTF-8 在我的机器上(ubuntu 14.04)结果是
服务器上的тестпривет
(ubuntu 12.04)我有:
???? ??????
$ java Qwe>的test.txt 在test.txt中见
???? ??????
答案 0 :(得分:1)
我修复它只是使用export JAVA_TOOL_OPTIONS = -Dfile.encoding = UTF8
答案 1 :(得分:0)
我不确定但是它可能只接受来自英语的ASCII字符,除非你有一些扩展或其他东西。但就像我说的那样,我最好的猜测是找不到角色,只是在他们的位置输出垃圾。
“Java,通过OutputStream的write()方法传递的任何未知字符都打印为普通问号”?“”
取自here
答案 2 :(得分:0)
java源文本必须使用与javac编译器相同的编码。这似乎是这种情况,UTF-8当然是理想的。
文件Qwe.class
没问题,内部使用Unicode for String。控制台的输出使用服务器平台编码。也就是说,java可能使用默认(平台)编码将Unicode中的文本转换为字节,并且无法处理Cyrillic。
所以你必须写一个文件,从不使用FileWriter(仅用于本地文件的实用程序类),而是使用:
... new OutputStreamWriter(new FileOutputStream(file), "UTF-8")
您也可以在服务器上设置用户区域设置,但这不是我的啤酒。
一般情况下,我会切换到文件记录器。