开发者社区> 技术小阿哥> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

JDK支持的字符集和系统属性值

简介:
+关注继续查看

Java开发中经常用到系统属性值,相关字符集。经常查询,确实很不爽,还要写个代码去看看。贴出来,以后就方便使用了。

获取当前JDK支持的字符集

1
2
3
4
5
6
public static void getJDKEncoding() {
        SortedMap<String, Charset> map = Charset.availableCharsets();
        for (String alias : map.keySet()) {
            System.out.println("别名:" + alias + "\t字符集对象:" + map.get(alias));
        }
    }
别名:alias
字符集对象:Charset
Big5 Big5
GBK GBK
UTF-8 UTF-8
ISO-8859-1
......
ISO-8859-1
.....

一共支持167种之多。

获取当前系统信息

1
2
3
4
5
6
7
8
9
/**
     * 获取当前系统环境信息
     */
    public static void getSystemProperties() {
        Properties p = System.getProperties();
        for (Object key : p.keySet()) {
            System.out.println("名称:" + key + "\t值:" + p.get(key));
        }
    }
Key:属性名 Value:属性值 说明
java.runtime.name Java(TM) SE Runtime Environment
sun.boot.library.path C:\Program Files\Java\jdk1.7.0_25\jre\bin
java.vm.version 23.25-b01 Java虚拟机版本
java.vendor.url http://java.oracle.com/ 提供商网址
path.separator ; 系统路径分割符Linux是":";曾经栽过。
java.vm.name Java HotSpot(TM) Client VM Java虚拟机名称;还有其他Java虚拟机Sun Classic/ExactVM(世界上第一款商用Java虚拟机),IBMJ9等
sun.jnu.encoding GBK 文件名编码
java.runtime.version 1.7.0_25-b17
java.library.path 系统环境变量中的值

file.separator \

文件目录分割符(Windows下)

Linux下(/)

file.encoding UTF-8 文件内容编码
sun.boot.class.path C:\Program Files\Java\jdk1.7.0_25\jre\lib\resources.jar;C:\Program Files\Java\jdk1.7.0_25\jre\lib\rt.jar;C:\Program Files\Java\jdk1.7.0_25\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.7.0_25\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.7.0_25\jre\lib\jce.jar;C:\Program Files\Java\jdk1.7.0_25\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.7.0_25\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.7.0_25\jre\classes
sun.java.launcher SUN_STANDARD
java.vm.specification.name Java Virtual Machine Specification
java.vm.specification.vendor Oracle Corporation 提供商
java.specification.name Java Platform API Specification 规格说明书
sun.management.compiler HotSpot Client Compiler
java.class.version 51.0 重要,major.minor组成;Class文件版本号
line.separator \r

Windows(\r)

Liunx(\n)

依靠上面的代码很难显示出来,通过调试查看结果:194801996.png

java.io.tmpdir C:\Users\ZHANGX~1\AppData\Local\Temp\

临时目录

可以设置:

1
java -Djava.io.tmpdir=/path/to/tmpdir


java.awt.printerjob sun.awt.windows.WPrinterJob
sun.arch.data.model 32 JDK ,JRE的位数(操作系统无关)
sun.cpu.endian little 小端模式
sun.desktop windows

下面是一个用户级信息:


Key:属性名 Value:属性值 说明
user.country CN 国家
user.dir E:\workspace__jsmart\Andvance 工作目录
os.arch x86 JRE的系统属性(与操作系统位数无关)
os.name Windows 7 操作系统
os.version 6.1 操作系统内部版本号
user.home C:\Users\Zhang 用户目录
user.timezone
用户所在的时区
user.name Zhang 当前登录系统的用户名
user.language zh 语言,(和国家信息对应,可在浏览器Internet选项的语言中查找)

关于“os.arch”该值与操作系统的位数无关,取决于机器安装的JRE位数,参见:

http://www.oracle.com/technetwork/java/javase/downloads/jre-6u25-download-346243.html可以看出JRE是有位数区别的。

参见一篇文章:

Java's "os.arch" System Property is the Bitness of the JRE, NOT the Operating System

http://mark.koli.ch/2009/10/javas-osarch-system-property-is-the-bitness-of-the-jre-not-the-operating-system.html可以说明情况。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import com.sun.servicetag.SystemEnvironment;
public class OSArchLies {
                                           
  public static void main(String[] args) {
                                             
    // Will say "x86" even on a 64-bit machine
    // using a 32-bit Java runtime
    SystemEnvironment env =
        SystemEnvironment.getSystemEnvironment();
    final String envArch = env.getOsArchitecture();
                                             
    // The os.arch property will also say "x86" on a
    // 64-bit machine using a 32-bit runtime
    final String propArch = System.getProperty("os.arch");
                                             
    System.out.println( "getOsArchitecture() says => " + envArch );
    System.out.println( "getProperty() says => " + propArch );
                                             
  }
}

j_0001.gif上面有些属性值很有让人摸不着的感觉,大多是由于没有深入研究JVM和JRE,已及各自的发展历程,还有就是属性名的起名有有些扰人。

      希望各位朋友指定上面问题,待我实验,更正。




本文转自 secondriver 51CTO博客,原文链接:http://blog.51cto.com/aiilive/1250837,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【C#】【报错解决】分析器错误消息: 无法识别的属性“targetFramework”。请注意属性名称区分大小写。
【C#】【报错解决】分析器错误消息: 无法识别的属性“targetFramework”。请注意属性名称区分大小写。
0 0
JDK18已经发布!9大特性之JEP 400:默认为UTF-8
JDK 18是Java SE平台版本18的开源参考实现,如JSR 393在Java社区进程中。 JDK 18在2022年3月22日正式发布。
0 0
如何通过Java代码判断当前的环境是否支持JRE 9
如何通过Java代码判断当前的环境是否支持JRE 9
0 0
Ecplise设置全局编码为UTF-8的方法
如果要使插件开发应用能有更好的国际化支持,能够最大程度的支持中文输出,则最好让Java文件使用UTF-8编码。 然而,Eclipse工作空间(workspace)的缺省字符编码是操作系统缺省的编码,简体中文操作系统 (Windows XP、Windows 2000简体中文)的缺省编码是GB18030,Windows7/8/10的缺省编码是GBK,在此工作空间中建立的工程编码是GB18030或者GBK,工程中建立的java文件也是GB18030或者GBK。
1071 0
基于Windows下处理Java错误:编码GBK的不可映射字符的解决方案
基于Windows下处理Java错误:编码GBK的不可映射字符的解决方案 最近在研究Java,涉及命令行编译,使用notepad++编辑器,然后使用javac编译; 之前的几个文件没有中文的内容,都没有产生错误,这次有中文就产生这样的错误! 解决方案 方案一、指定编码 javac -encoding utf-8 CommonClassLoader.
1023 0
Java——采用filter统一设置字符集
简介   Filter 技术是servlet 2.3 新增加的功能。servlet2.3是sun公司于2000年10月发布的,它的开发者包括许多个人和公司团体,充分体现了sun公司所倡导的代码开放性原则。
547 0
JAVA判断文件编码类型
【本文转载于JAVA判断文件编码类型】 java读取文件,处理过程中,可能因为文件的编码问题导致了中文乱码。有时需要将UTF-8的改为ANSI的编码。以下代码就可以判断文件是什么编码方式。 主要jar包:cpdetector.jar  下载地址http://cpdetector.sourceforge.net/ 同时还需jchardet-1.0.jar这个包,否则detector.add
1864 0
C#4.0新特性 可选命名参数
Code    class Program    {        static void PrintStudents(int id = -1, string name = "*", int age = -1)        {            Console.
578 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载