Java的常见问题

前言

对于经常使用 Java 的人来说,经常会遇到 Java 的中文编码等问题,这里就简要记录下。

Java 的安装等问题就不过多介绍了。这里我使用的 Java 环境如下:

java 12.0.1 2019-04-16
Java(TM) SE Runtime Environment (build 12.0.1+12)
Java HotSpot(TM) 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)

编码问题

由于个人非常喜欢 UTF8 编码,所以就统一选择该编码格式。 其实说起来, Java 的中文输出乱码问题主要分析流程可以简单划分成这几个部分:

源代码文件编码格式 --> 编译器编码格式 --> 输出的场景编码格式。

对于输出的场景,一般是终端。需要注意 Windows 系列一般不是 UTF8 编码。

我们这里,就按照我们分析的流程一步一步来,这样就不会有太大的问题。首先就是源代码的文件编码格式,不管你使用什么软件写代码,希望你能清楚的知道你写的代码的文件编码格式,并且也能清楚的知道如何修改。这里我使用的是 Vim 。我的文件编码如下: Vim File Code

好了,下一步就是编译阶段,编译器用何种编码规则读取我的源代码文件了。这里就引入了编译时候的一个参数 -encoding

javac -encoding utf8 Test.java

最后一个阶段就是我们程序输出的时候,终端如何解码我们的输出。一般程序输出的信息都是可以被正确解码的,显示是没有问题的,如果是采用管道重定向到文件,需要注意正确编码。

手动添加依赖 Jar 包

目前大众采用的方式是集成的 IDE ,由于作者太穷了,买不起配置好的电脑,同时安装使用的软件太多,就没有选择 IDE + Maven 的方式。 而是采用 文本编辑器 + 命令行编译。

Windows

javac -encoding utf8 -cp ".;selenium-server-standalone-3.141.59.jar" .\Test.java
符号 意义
-cp cp: classpath 即指定本地库路径
; 分割符

Linux

javac -encoding utf8 -cp .:selenium-server-standalone-3.141.59.jar .\Test.java

Linux 环境下,不再像 Windows 需要双引号。同时分隔符也由分号换成了冒号。

BSD

既然已经深入到了这个层次,那么就勇敢的放弃 Java 吧。因为你会慢慢体会到 Java 在这个系列渣渣的支持。

不过,通过考虑这个问题,作责得出了一个结论: Java 所谓的跨平台口号,只是一个口号而已。它只不过把系统需要处理的跨平台的问题转移到了虚拟机,由他们来决定支持哪些不支持哪些平台。