IT资讯 11月 VS Code 的 Java 新功能和编码策略

vise · 2021-12-18 09:00:08 · 热度: 25

微软整理并公布了 2021年11月 VSCode 中 Java 基础开发相关的最新功能,以及与应对编码问题的一些解决策略:

项目管理 – 弃用“.project”等元数据文件

导入新的 Java 项目时,Visual Studio Code 不再在项目路径中生成那些隐藏的“.project”元数据文件!这是一个已经存在三年多的问题,而 VSCode 在 11月的 1.6.3 版本中修复了它。关于此功能的实现技术可查看这篇博客

测试 – 在测试与测试对象之间跳转

在 11 月的版本中,VSCode 添加了一项新功能,允许用户在测试和相应的测试对象之间跳转,这个功能将帮助用户更方便地编写单元测试:

11月 VS Code 的 Java 新功能和编码策略

  • 代码操作 – 更方便地生成构造函数和覆盖/实现方法

微软之前的博客中提到过,会一直致力让常见代码的操作更加易于使用。在最新版本中,用户现在可以使用 Java 类旁边的“灯泡图标”来方便地生成构造函数或覆盖/实现方法!以下是一个快速演示:

11月 VS Code 的 Java 新功能和编码策略

  • 乱码问题

背景

用户在处理各种语言时遇到某种编码问题是很常见的,计算机只能理解 0 和 1 等二进制数据,它使用字符集将数据编码/解码为现实世界的字符。两个进程在进行I/O交互时,必须使用兼容的字符集进行编码和解码,否则可能会出现乱码。MacOS 和 Linux 一般都使用 UTF-8,因此编码对它们来说不是问题。但是,对于 Windows,默认字符集不是 UTF-8 并且是平台相关的,这会导致不同 工具 之间的编码不一致。

常见问题

以下是在 Windows 终端上运行 Java 程序时的典型编码问题。

  • 文件或目录名包含Unicode字符,Java启动器找不到对应的类路径或主类。
中文目录
├── Hello.class
└── Hello.java
C:\Test>java -cp 中文目录 Hello
Error: Could not find or load main class Hello
  • 带有 Unicode 字符的字符串文字在打印到终端时会出现乱码。
Exercises
├── 练习.class
└── 练习.java
C:\Test>java -cp ./Exercises 练习
Error: Could not find or load main class ??
Caused by: java.lang.ClassNotFoundException: ??
  • Java程序与终端交互I/O时出现乱码
public class Hello {
    public static void main(String[] args) {
        System.out.println("你好!");
    }
}
C:\Test>chcp
65001
C:\Test>java -cp ./Exercises Hello
??!
C:\Test>java -Dfile.encoding=UTF-8 -cp ./Exercises Hello
你好!
  • 程序需要从 stdin 读取 Unicode 字符,并将 Unicode 字符打印到 stdout。
import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println(scanner.nextLine());
    }
}
C:\Test>chcp
65001
C:\Test>java -Dfile.encoding=UTF-8 -cp ./Exercises Hello 
你好 
��

之前,为了缓解编码问题,VSCode 在 Java Debugger 端添加了一些解决方法去强制在工具链中使用 UTF-8。例如,添加一个launcher.bat 强制终端的代码页为65001 ,并将默认的“file.encoding”属性设置为“UTF-8”。但事实证明,它们并没有系统地解决编码问题,并且还引入了一些额外的副作用(参见#756microsoft/vscode-java-debug#622microsoft/vscode-java-debug#646)。

而事实上,用户只需要将 windows 系统区域设置为他们想要的语言,然后 JVM 和终端将自动更改为与用户的系统区域设置兼容的编码。官方 Java 文档 ( https://www.java.com/en/download/help/locale.html )也建议这样做。

以下屏幕截图显示了如何在 Windows 中更改系统区域设置。例如,如果你想使用终端在 Java 程序中输入汉字,就可以将 Windows 系统区域设置为中文。默认的 Java 字符集将是”GBK”并且 cmd 代码页将是”936″ ,就可以很好地支持中文字符。

11月 VS Code 的 Java 新功能和编码策略

这是有关如何处理编码问题的详细文档

猜你喜欢:
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册