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

关于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.

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


推荐阅读

    linux更改硬盘命令?

    linux更改硬盘命令?,系统,工具,电脑,号码,管理,名称,分区,首次,数据,环境,在L

    linux密码更改命令?

    linux密码更改命令?,密码,系统,名称,信息,环境,命令,使用者,用户,权限,终端,L

    linux更改扩展命令?

    linux更改扩展命令?,管理,地址,数据,工作,系统,在线,工具,命令,环境,单位,Lin

    更改linux命令行名字?

    更改linux命令行名字?,系统,名字,命令,文件,用户,文件名,用户名,用户组,终

    linux设置编码命令?

    linux设置编码命令?,系统,数据,发展,文件,字符集,命令,数据库,以下,终端,大

    linux命令别名的更改?

    linux命令别名的更改?,系统,别名,新增,环境,地方,命令,查询系统,名字,主机

    linux命令更改用户?

    linux命令更改用户?,系统,密码,管理,用户,命令,环境,工作,地址,电脑,文件,lin

    linux更改uid命令?

    linux更改uid命令?,系统,信息,管理,工作,密码,用户,设备,数字,名称,命令,linu

    更改时间linux命令?

    更改时间linux命令?,时间,系统,命令,环境,网上,信息,资料,概念,位置,终端,lin

    linux命令行更改中文?

    linux命令行更改中文?,系统,环境,管理,国家,信息,软件,文化,设备,中文,命令,l

    linux更改账户名命令?

    linux更改账户名命令?,密码,系统,代码,命令,基础,信息,软件,用户,用户名,账

    linux更改uid命令?

    linux更改uid命令?,系统,信息,管理,工作,密码,用户,设备,数字,名称,命令,linu

    更改时间linux命令?

    更改时间linux命令?,时间,系统,命令,环境,网上,信息,资料,概念,位置,终端,lin

    linux更改账户名命令?

    linux更改账户名命令?,密码,系统,代码,命令,基础,信息,软件,用户,用户名,账

    linux命令行更改中文?

    linux命令行更改中文?,系统,环境,管理,国家,信息,软件,文化,设备,中文,命令,l

    linux更改格式命令?

    linux更改格式命令?,系统,文件,命令,设备,时间,电脑,代码,工具,格式,模式,怎

    linux命令看文件编码?

    linux命令看文件编码?,状态,系统,文件,工具,名称,数据,命令,格式,汉字,以下,L

    linux命令更改时区?

    linux命令更改时区?,时间,系统,标准,大陆,国家,命令,时区,终端,之后,指令,lin

    linux命令更改为中文?

    linux命令更改为中文?,系统,单位,地方,软件,管理,标准,工具,信息,设备,中文,m

    linux命令更改域名?

    linux命令更改域名?,地址,网站,系统,名称,服务,软件,环境,网址,信息,实时,Lin