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

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


推荐阅读

    更改mac下svg的打开方式

    更改mac下svg的打开方式,方式,右键,在使用go pprof分析程序的时候,可以使用web方式查看函数调用,但是每次执行web命令的时候都是用sublime打

    修改电脑系统信息|电脑更改系统

    修改电脑系统信息|电脑更改系统,,电脑更改系统重命名步骤如下:1、首先,点击桌面左下角的”菜单“图标,然后点击”设置“进入设置页面。2、接

    git设置编码|git语言设置

    git设置编码|git语言设置,,git设置编码点击cap4j搜索从git直接链接上拉代码。git语言设置Git是一个开源的分布式版本控制系统,可以有效、高

    wps如何更改字体颜色

    wps如何更改字体颜色,WPS教程,1.怎样改变文字的颜色?我想要改变字体的颜色,但是电击“文字颜色”更改面板文字颜色的源代码: 。menu a{colo

    修改电脑bios设置|电脑怎么更改bios

    修改电脑bios设置|电脑怎么更改bios,,电脑怎么更改bios最简单方法做系统或者下载个CPU-Z就行了也没有高手为了骗你把的电脑刷Bios去还有看

    个人电脑显示器|自己的显示器

    个人电脑显示器|自己的显示器,,自己的显示器1、显示器生产厂家都会把自己产品的品牌印在显示器的正面和背面,很明显的一个标志(中间或右下角