java的数字与字符的强转 ,究竟按照那种编码方式来转跟什么有关系?
发布网友
发布时间:2022-05-02 17:04
我来回答
共2个回答
热心网友
时间:2023-10-09 01:00
文件编码是给你和IDE看的 编译后就不存在这问题。 java运行时的编码说白了就是固定的编码,和运行环境挂钩,不同环境解释出来不同的字符。控制台所支持的编码里面 4 那一位有可能不是什方片。 和运行环境有关。
给你摘抄一段:
- 编译:我们用javac编译JAVA文件时,javac不会智能到猜出你所要编译的文件是什么编码类型的,所以它需要指定读取文件所用的编码类型。默认 javac使用平台缺省的字符编码类型来解析JAVA文件。平台缺省编码是操作系统决定的,我们使用的是中文操作系统,语言区域设置通常都是中国*,所 以平台缺省编码类型通常是GBK。这个编码类型我们可以在JAVA中使用System.getProperty(“file.encoding”)来查 看。所以javac会默认使用GBK来解析JAVA文件。如果我们要改变javac所用的编码类型,就要加上-encoding参数,如javac -encoding utf-8 Test.java。
这里要另外提一下的是eclipse使用的是内置的编译器,并不能添加参数,如果要为javac添加参数则建议使用ANT来编译。不过这并非出现乱码的塬因,因为eclipse可以为每个JAVA文件设置字符编码类型,而内置编译器会根据此设置来编译JAVA文件。
运行:编译后字符数据会以UNICODE格式存入字节码文件中。然后eclipse会调用java命令来运行此字节码文件。因为字节码中的字符总是 UNICODE格式,所以java读取字节码文件并没有编码转换过程。虚拟机读取文件后,字符数据便以UNICODE格式存储在内存中了。追问如果说按照默认编码,对于汉字来说,
String str="你好";
byte[] array=str.getByte();
默认是gbk编码
但是:
char(97)却是按照ascii编码
为什么?
追答GBK兼容ASCII编码
热心网友
时间:2023-10-09 01:00
设置编码格式utf-8还是gbk