首先,java的中文问题出现在很多场合内。每种场合使用不同的处理方法。你这里想搞清
楚的是“在java源代码文件中的常量字符串引号内出现的中文字符的运行时显示”的问题
。
ok,那么我们就来看看javac如何编译该字符串。首先,javac看命令行中有没有用-encod
ing参数指定一个字符集,没有,则用系统环境中指定的字符集。接下来javac开始解释源
码文件,遇到多字节的字符,就用前面确定的字符集编码来解释,并转换为unicode,写入
.class 的字节码文件里面。
好了,下面我们要运行这个class文件了,jvm启动后读入class字节码,那些个中文字符串
都以unicode表示,这没什么可说的,在哪都一样(平台无关的)。下面可能需要输出这个字
符串到其它的应用程序了:控制台/文件/socket等等等等....这样jvm首先要检查操作系统
的 encoding(注意,jvm从字节码里面完全不知道这些字符串是什么编码的,全是unicode
),然后按该encoding来解释这些 unicode码到操作系统的encoding。当然,对于特殊的环
境jvm也许不去检查操作系统的encoding,而是从环境变量里面读,这样你就可以控制jvm
执行时的目的encoding了。
最后一步,如果你的操作系统的(或目的)encoding与真实的encoding一致(或具有兼容关系
),那么你将看到正确的字符串,如果你不一致,你会看到什么?对了,是问号。
所以“在 Linux 操作系统上就是ISO-8859-1”是不对的,关键是环境变量LANG是怎么设置
的,以及有没有显式地使用-encoding参数。
其实如果你编译和运行如果在同一个操作系统上运行的话,输出是绝对不会有问题的。那
么你的第四个问题是怎么产生的呢?很简单,虚拟机运行时输出的字符串是100%正确的,
可惜你的linux系统没有中文显示支持,所以你看到了乱码(不是问号,问号代表遇到了不
认识的字符),而从远程登录时,这些码被正确地显示了出来,这是因为你的远程系统具有
中文显示支持。
分享到:
相关推荐
在java开发里,源代码是.java文件,然后经过编译后生成计算机识别的.class文件,但是.class文件是计算机识别的我们一般看不明白,因此需要反编译变成我们能读懂的源码,但是反编译后的代码并不是和源码一模一样,...
那么,在这些过程中,JDK和JVM是如何将这些文件如何编码和解码并运行的呢? 这里,以中文win2k操作系统为例说明JAVA类是如何来编码和被解码的。 第 一步,我们在中文win2k中用编辑软件如记事本编写一个Java源程序...
6、Java源程序在转换为机器语言执行过程中既有编译也有解释。 ( ) 7、// 是java的多行注释符。 ( ) 面向对象 3.Java 仅支持类间的单重继承。 ( ) 17.方法可以没有返回值,或有一个返回值,也可以有多个返回值。...
当我们编写完成一个java类后,运行结果会得到一个class文件,这种二进制文件如果用普通记事本打开,就会出现各种乱码现象,令人十分头疼,当我们要查看.class文件的源代码时,可以通过反编译工具jd-gui实现。...
Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...
java程序的编码通过样例test。java(附执行程序)
Luyten是一款很强大的反编译工具包,是一款github的开源工具,软件功能非常强大,界面简洁明晰、操作方便快捷,设计得很人性化。 Github : https://github.com/deathmarine/Luyten/releases。 自从有了Luyten就放弃...
Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...
Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...
Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...
Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...
Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...
该项目是将Java源代码编译为可运行的草稿项目的工具。 (前Alpha!) 下载(如果您只想创建一个项目,请执行此操作) 始终将是这里的最新链接: : 安装很简单,只需解压缩存档,然后将其“安装”即可 安装了Java 8...
内容涉及Java加密和解密,反编译和反反编译,对类、成员变量、方法的攻击和保护,消息摘要,消息验证码,数字签名,口令保护,数字证书和证书链的生成、签发、检验和维护,SSL和HTTPS客户及服务器程序、基于代码位置...
Java实验指导书.doc
多媒体的课程设计 用程序实现算术编码 用java语言实现了算术编码 内容包括:编码和解码的源代码(cdoing.java decoding.java);论文;编译好的程序(只要安装jdk且配好环境变量的机器就可以运行)
smali目录的.smali文件是对java文件的解析,不能瞎改,汉化的话要注意,搜索整个目录,找到你要汉化的文字,替换成就行,注意,里面的参数别瞎改,不然程序编译不成功或者不能正常运行,如果汉化是改的.smali文件,请将其转为...
北京动力节点-Java编程零基础教程-119-Java基本语法-方法详解-方法的调用过程-方法调用过程中栈内存的变化.avi 北京动力节点-Java编程零基础教程-120-Java基本语法-方法的重载-什么是方法重载.avi 北京动力节点-...
Android Killer 是一款可视化的安卓应用逆向工具,集Apk反编译、Apk打包、Apk签名,编码互转,ADB通信(应用安装-卸载-运行-设备文件管理)等特色功能于一 身,支持logcat日志输出,语法高亮,基于关键字(支持单行...