String str = new String("测试字符串");
在java程序里面,会采用file.encoding指定的字符集也就是Charset.defaultCharset().name()所返回的字符集编码格式进行解码转换为unicode码值。    
请问:“测试字符串” 所采用的是怎么编码的呢?如何确定?是不是和该代码所在源码文件的编码格式有关?

解决方案 »

  1.   

    不是,而是用系统字符集file.encoding去读源文件,即源文件读成byte[]后用file.encoding去转换成String(char[])
      

  2.   

    那file.encoding的value和文件的编码格式不同,会有问题的吧。
      

  3.   

    源文件编码格式由操作系统决定(也可由ide指定更改),
    你读取的字符串是java默认的编码方式
      

  4.   

    1. jvm里存的肯定是unicode形式。并且是用file.encoding字符集进行编码转换到unicode
    2. 测试字符串就是你的文件编码形式下的字符串,换一种编码,字符串可能显示的也不是你想要的。
      

  5.   

    我从网上找了一段代码,来判断 “测试字符串” 的编码格式。  该串所在的源码文件编码为UTF-8,但是测试结果, “测试字符串”的编码却是GB2312。如果这样的话,那和您说的好像不相符。
      

  6.   

    初入java,对字符集编码这块总感觉似懂非懂。恳请大虾指点迷津。
      

  7.   

    代码很多的。那是我从咱论坛里下载的。他提供了一个jar包。
      

  8.   

    个人理解:1,对于”测试字符串“是一个常量字符串,存储于jvm的静态存储区,采用的是unicode编码。采用何种编码进行解码转换为unicode呢?我认为应该是操作系统也就是file。encoding进行的解码。而作为源码文件它则采用我们指定的字符集进行存储到本地硬盘。