java的默认编码
2018-06-18 03:52:36来源:未知 阅读 ()
java的默认编码
比如String.getBytes()就调用的默认编码,流程如下:
会先获取默认编码:String csn = Charset.defaultCharset().name();
如果默认编码有异常则使用:"ISO-8859-1"
那么默认编码如何获取?看了下源码如下
The default charset is determined during virtual-machine startup and typically depends upon the locale and charset of the underlying operating system.
默认字符集是在虚拟机启动期间确定的,通常取决于底层操作系统的区域设置和字符集。
public static Charset defaultCharset() {
if (defaultCharset == null) {
synchronized (Charset.class) {
String csn = AccessController.doPrivileged(new GetPropertyAction("file.encoding"));//系统属性file.encoding设置的编码
Charset cs = lookup(csn);
if (cs != null)
defaultCharset = cs;
else
defaultCharset = forName("UTF-8");//得不到系统设置的编码则用UTF-8
}
}
return defaultCharset;
}
file.encoding 设置(运行时可设置):
在命令行中输入 java,在给出的提示中会出现 -D 的说明:
-D= # set a system property
-D后面需要跟一个键值对,作用是设置一项系统属性
对 -Dfile.encoding=UTF-8 来说就是设置系统属性 file.encoding 为 UTF-8
其实就是文件的编码
java默认编码理解总结:
先看file.encoding设置的编码(eclipse运行时候,为了不乱码会以文件编码运行)
如果没有设置的编码则用"UTF-8"
如果设置的编码不可用则用"ISO-8859-1"
注意点:
我们的电脑系统一般都是默认的GBK编码,如果cmd命令编译默认都用GBK。
编译编码(编译用编码和文件编码一致,不然会编译不通过,我猜可能是为了防止编译乱码):javac -encoding UTF-8 Test.java
运行编码(也就是defaultCharset,java会程序用的默认编码)java -Dfile.encoding=utf-8 Test
编译编码和运行编码之间没有必要联系。编译编码(必须和文件一致,保证文件的正确编译),执行编码(为java程序(JRE)设定默认编码)。这也是为什么jar包里的class代码无论在什么编码下都可执行
在使用eclipse混合文件编码时也可编译执行,原因:个人认为eclipse等开发环境会默认使用文件编码格式编译,文件(程序入库的文件)编码格式运行(因为运行的是main()方法,main()可以多个,但程序入口就一个)
在服务器上运行时,不会和eclipse一样自动设置,固最好配置执行编码
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:java程序员面试金典--i++
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash