Epa*_*aga 17 java macos console encoding character-encoding
我有一个程序在控制台上运行,它的变音符号和其他特殊字符在Mac上输出.这是一个简单的测试程序:
public static void main( String[] args ) {
System.out.println("höhößüä");
System.console().printf( "höhößüä" );
}
Run Code Online (Sandbox Code Playgroud)
在默认的Mac控制台(使用默认的UTF-8编码)上,打印:
h?h????
h?h????
Run Code Online (Sandbox Code Playgroud)
但在手动将Mac终端的编码设置为"Mac OS Roman"后,它已正确打印
höhößüä
höhößüä
Run Code Online (Sandbox Code Playgroud)
请注意,在使用System.console()的Windows系统上工作:
h÷h÷?³õ
höhößüä
Run Code Online (Sandbox Code Playgroud)
所以我如何制作我的节目...... rolleyes ......"到处跑"?
Boz*_*zho 13
启动应用程序时,请尝试以下命令行参数:
-Dfile.encoding=utf-8
这会更改JVM的默认编码以进行I/O操作.
你也可以尝试:
System.setOut(new PrintStream(System.out, true, "utf-8"));
Run Code Online (Sandbox Code Playgroud)
gam*_*mma 10
Epaga:看看这里.您可以在打印流中设置输出编码 - 只需确定或绝对确定正在设置哪个.
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
public class Test {
public static void main (String[] argv) throws UnsupportedEncodingException {
String unicodeMessage =
"\u7686\u3055\u3093\u3001\u3053\u3093\u306b\u3061\u306f";
PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.println(unicodeMessage);
}
}
Run Code Online (Sandbox Code Playgroud)
要确定控制台编码,您可以使用系统命令"locale"并解析输出 - 在德语UTF-8系统上看起来像:
LANG="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_CTYPE="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22948 次 |
最近记录: |