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

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

获取当前JDK支持的字符集

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

Big5Big5

GBKGBK

UTF-8UTF-8

ISO-8859-1……ISO-8859-1…..

一共支持167种之多。

获取当前系统信息

/*** 获取当前系统环境信息*/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.nameJava(TM) SE Runtime Environment

sun.boot.library.pathC:\Program Files\Java\jdk1.7.0_25\jre\bin

java.vm.version23.25-b01Java虚拟机版本

java.vendor.url提供商网址

path.separator;系统路径分割符Linux是":";曾经栽过。

java.vm.nameJava HotSpot(TM) Client VMJava虚拟机名称;还有其他Java虚拟机Sun Classic/ExactVM(世界上第一款商用Java虚拟机),IBMJ9等

sun.jnu.encodingGBK文件名编码

java.runtime.version1.7.0_25-b17

java.library.path系统环境变量中的值

file.separator\

文件目录分割符(Windows下)

Linux下(/)

file.encodingUTF-8文件内容编码

sun.boot.class.pathC:\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.launcherSUN_STANDARD

java.vm.specification.nameJava Virtual Machine Specification

java.vm.specification.vendorOracle Corporation提供商

java.specification.nameJava Platform API Specification规格说明书

sun.management.compilerHotSpot Client Compiler

java.class.version51.0重要,major.minor组成;Class文件版本号

line.separator\r

Windows(\r)

Liunx(\n)

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

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

临时目录

可以设置:

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

java.awt.printerjobsun.awt.windows.WPrinterJob

sun.arch.data.model32JDK ,JRE的位数(操作系统无关)

sun.cpu.endianlittle小端模式

sun.desktopwindows

下面是一个用户级信息:

Key:属性名Value:属性值说明

user.countryCN国家

user.dirE:\workspace__jsmart\Andvance工作目录

os.archx86JRE的系统属性(与操作系统位数无关)

os.nameWindows 7操作系统

os.version6.1操作系统内部版本号

user.homeC:\Users\Zhang用户目录

user.timezone用户所在的时区

user.nameZhang当前登录系统的用户名

user.languagezh语言,(和国家信息对应,可在浏览器Internet选项的语言中查找)

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

可以看出JRE是有位数区别的。

参见一篇文章:

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

可以说明情况。

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 runtimeSystemEnvironment 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 runtimefinal String propArch = System.getProperty(“os.arch”);System.out.println( “getOsArchitecture() says => ” + envArch );System.out.println( “getProperty() says => ” + propArch );}}

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

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

本文出自 “野马红尘” 博客,谢绝转载!

先知三日,富贵十年。

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

相关文章:

你感兴趣的文章:

标签云: