本地字符集与java虚拟机字符集

本地windows默认字符集和java虚拟机的默认字符集

(1)查看本地windows的字符集方法

  1. 第一种方法是在cmd命令行界面上通过chcp命令查看

        C:\>chcp

        Active code page: 936

  2. 第二种方法是在cmd命令行标题栏右键属性,在弹出对话框内可以看到当前的字符集编码

本地字符集与java虚拟机字符集_第1张图片

 

      Active code page: 936其实就是中文GBK的编码集。

(2)查看java虚拟机的默认字符集的方法

      编写程序查看(前提是机器装载JDK而且配置过环境变量)

      首先,用记事本建立CharsetTest.java文件

          import java.util.*;

          import java.nio.charset.*;

          class CharsetTest

          {

              public static void main(String[] args) throws Exception

             {

                  Properties pps=System.getProperties();

                  pps.list(System.out);      // 以列表的方式查看java虚拟机的所有属性

                  pps.put("file.encoding","ISO-8859-1"); // 更改java虚拟机的默认编码集

             }

         }

      其次:命令提示符下运行:

          javac CharsetTest.java

          Java  CharsetTest

      最后,查file.encoding=GBK

本地字符集与java虚拟机字符集_第2张图片

(3)查看java虚拟机的支持的字符集   

         import java.util.*;

         import java.nio.charset.*;

         class CharsetTest

         {

               public static void main(String[] args) throws Exception

               {

                     Map m=Charset.availableCharsets();

                    Set names=m.keySet();

                    Iterator it=names.iterator();

                    while(it.hasNext())

                    {

                        System.out.println(it.next());

                    }

                }

            }

(4)本地windows系统的字符集一般是不能改变的。默认为GBK

(5)设置java虚拟机的属性有以下三种方法:

     1、Properties pps=System. getProperties();

           pps.put("file.encoding","ISO-8859-1");

           此方法只是临时的更改字符集,关闭命令提示符后系统虚拟机仍会将字符集更改为默认值。

     2、System.setProperty("file.encoding","ISO-8859-1");

           System.setProperty("file.encoding","ISO-8859-1")等同于:System.getProperties().setProperties("file.encoding","ISO-8859-1")

           此方法也只是临时的更改字符集,关闭命令提示符后系统虚拟机仍会将字符集更改为默认值。

     3. 对于装载到MyeclipseJDK我们可以通过Myeclipse来设置。

(6) 本地windows系统字符集和java虚拟机字符集的区别

        我们知道从标准输入设备(如键盘)输入中文后,本地windows系统就会使用自身默认的GBK编码将中文对应的GBK码值存放在   字节数组中。输出时也是将字节数组中的GBK码值通过GBK解码为对应的中文。

       Java虚拟机默认的字符集也是GBK,我们可以对其修改,如果我们将字节数组转换为字符或者字符串,就需要java虚拟机再次对字节数组进行编码,此时需要用到java虚拟机的编码方式,字符或者字符串输出到标准输出设备时还需要进行解码,用的也是java虚拟机的对应的解码方式。将字符或者字符串转换为字节数组,此时的字节数据便是中文对应的GBK码值,本地系统就会运用自己的GBKGBK码值转换为中文。    

你可能感兴趣的:(Java)