首页 / 知识

关于java:更改String(byte [])的默认编码

2023-04-16 11:22:00

关于java:更改String(byte [])的默认编码

Changing the default encoding for String(byte[])

是否可以更改String(byte [])构造函数使用的编码?

在我自己的代码中,我使用String(byte [],String)指定编码,但是我使用的是无法更改的外部库。

1
2
3
4
String src ="with accents: ?? ?";
byte[] bytes = src.getBytes("UTF-8");
System.out.println("UTF-8 decoded:"+new String(bytes,"UTF-8"));
System.out.println("Default decoded:"+new String(bytes));

此输出为:

1
2
UTF-8 decoded: with accents: ?? ?
Default decoded: with accents: ???? ???

我尝试更改系统属性file.encoding,但是它不起作用。


您需要在启动JVM之前更改语言环境。参见:

Java,错误ID 4163515

某些地方似乎暗示您可以通过在启动JVM时设置file.encoding变量来做到这一点,例如

1
java -Dfile.encoding=UTF-8 ...

...但是我自己还没有尝试过。最安全的方法是在操作系统中设置环境变量。


我认为您想要这样:System.setProperty(" file.encoding"," UTF-8");

它解决了一些问题,但我还有另一个问题。字符"?-"和" ??"如果SO为ISO-8859-1,则无法正确转换。仅在启动时使用JVM选项,就可以解决它。现在,当显示特殊字符时,只是我的NetBeans IDE中的Java控制台崩溃了字符集。


引自defaultCharset()

The default charset is determined
during virtual-machine startup and
typically depends upon the locale and
charset of the underlying operating
system.

在大多数操作系统中,您可以使用环境变量来设置字符集。


默认编码编码构造函数更改

最新内容

相关内容

猜你喜欢