您的位置:首页 > 其它

Charset.defaultCharset() 获取的语言环境的编码到底是哪里来的 ?

2016-05-11 12:43 337 查看
Charset.defaultCharset() 获取的语言环境的编码到底是哪里来的 ?

写个单元测试验证下:

public class Test {
public static void main(String args[]){
System.out.println(Charset.defaultCharset());
}
}
执行结果是GBK:

立马懵逼了。对不起前任公司啊,可能给你写错了一行代码(这里是可能,到我离职也没有问题啊)。文章的最后我解释一下

问了一下度娘:是eclipse默认编码的问题;修改既可以。



但是这就是问题了:线上是放在tomcat中的。没有eclipse。你说Charset.defaultCharset() 读取是哪里的语言环境的编码呢?

补充:tomcat没有默认语言编码。可以设置conf/server.xml文件中[b]Connector 标签;设置[/b]<Connector
URIEncoding="utf-8" />;


再问度娘:

可以修改环境变量:

变量名:JAVA_TOOL_OPTIONS变量值:-Dfile.encoding=UTF-8



执行单元测试



貌似可以结贴了:

Charset.defaultCharset()默认读取还是配置的语言编码;也是就是系统的;

我以前的代码没有暴露出来的错误,可能是我们的运维小哥给系统设置的语言环境是UTF-8;

以上都不是重点:我想说的是:关注在系统和系统之间交互的时候,要注意语言编码;正确选择合适的代码。

引申:以上都不是重点:下篇博客我会介绍加解密的一些简单知识。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: