String直接量的编码依赖源文件的编码吗

J2EE 码拜 10年前 (2015-05-10) 866次浏览 0个评论
 

比如一个.java源文件保存为gbk编码,里面有一个写在代码内的常量字符串。
当我使用这个字符串的时候,他是否就是GBK编码的字符串?
我感觉java的字符串应该和编码无关吧,但是刚刚测试UTF-8的java源文件编译后,输出语句输出的常量是乱码,改为GBK就正常。
求大神详细讲解下相关知识

20分
个人感觉,如果没有指定字符编码,那么javac会使用默认的编码解析文件(应该是系统默认编码吧),那么源码中UTF-8编码的汉字就有可能被当成GBK编码的,因为两种编码方式的码值不一样,UTF-8的码值在GBK中可能就没有对应的字,然后就乱码了。lz可以试试使用GBK编码格式打开一个UTF-8编码的文件,就是一堆乱码。
引用 1 楼 u011004037 的回复:

个人感觉,如果没有指定字符编码,那么javac会使用默认的编码解析文件(应该是系统默认编码吧),那么源码中UTF-8编码的汉字就有可能被当成GBK编码的,因为两种编码方式的码值不一样,UTF-8的码值在GBK中可能就没有对应的字,然后就乱码了。lz可以试试使用GBK编码格式打开一个UTF-8编码的文件,就是一堆乱码。

哦,原来是编译时做的,我还以为是运行时呢


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明String直接量的编码依赖源文件的编码吗
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!