Nickzhu微软开发部门高级项目经理大家好,欢迎来到11月版的VisualStudioCodeJava更新!在这个年终博客中,我们将分享一些与基本Java开发相关的最新特性以及一些处理编码问题的解决策略。基础开发相关的功能会直接影响到开发者日常的工作效率,提升这方面的用户体验永远是我们关注的重点。在11月的更新中,我们在这方面做了几项改进:项目管理-告别“.project”和其他元数据文件如果您正在使用Java扩展包进行Java开发,我们有好消息要告诉您-VisualStudio当您导入新的Java项目时,代码不再在项目路径中生成那些隐藏的“.project”元数据文件!这个问题已经存在三年多了,我们在11月的版本中修复了它。如果您有兴趣了解我们是如何解决的,可以访问此博客。Tests–在测试和测试对象之间跳转在11月的版本中,我们添加了一个新功能,允许用户在测试和相应的测试对象之间跳转,这个功能将帮助用户更方便地编写单元TestCodeManipulation–GenerateConstructorsandOverride/ImplementMethods更简单我们在之前的博客中提到过,我们将始终致力于使通用代码操作更易于使用。在最新版本中,用户现在可以使用Java类旁边的“灯泡图标”轻松生成构造函数或覆盖/实现方法!这是一个快速演示:“处理乱码”用户在处理各种语言时遇到某种编码问题是很常见的。我们在听到此类反馈后进行了一些分析,因此在此博客中,我们想分享我们的发现和建议。背景计算机只能理解二进制数据,如0和1,它使用字符集将数据编码/解码为现实世界的字符。两个进程进行I/O交互时,必须使用兼容的字符集进行编解码,否则可能会出现乱码。MacOS和Linux到处都使用UTF-8,因此编码对他们来说不是问题。但是,对于Windows,默认字符集不是UTF-8,并且依赖于平台,这会导致不同工具之间的编码不一致。常见问题以下是在Windows终端上运行Java程序时的典型编码问题。文件名或目录名包含Unicode字符,Java启动器找不到对应的类路径或主类。中文目录├──Hello.class└──Hello.javaC:\Test>java-cp中文目录HelloError:CouldnotfindorloadmainclassHelloStringliteralswithUnicodecharacters打印到终端时会出现乱码。Exercises├──Exercise.class└──Exercise.javaC:\Test>java-cp./ExercisesExercisesError:Couldnotfindorloadmainclass??Causedby:java.lang.ClassNotFoundException:??Java程序和终端交互I/O出现乱码publicclassHello{publicstaticvoidmain(String[]args){System.out.println("Hello!");}}C:\Test>chcp65001C:\Test>java-cp./Exercises你好??!C:\Test>java-Dfile.encoding=UTF-8-cp./Exercises你好你好!程序需要从stdin读取Unicode字符并将Unicode字符打印到stdout。importjava.util.Scanner;publicclassHello{publicstaticvoidmain(String[]args){扫描仪scanner=newScanner(System.in);System.out.println(扫描仪.nextLine());}}C:\Test>chcp65001C:\Test>java-Dfile.encoding=UTF-8-cp./Exercises你好???我们处理此类问题的发现和建议之前,为了缓解编码问题,我们添加了在Java调试器端有一些解决方法可以在我们的工具链中强制使用UTF-8。例如,添加一个强制终端代码页为65001并将默认“file.encoding”属性设置为“UTF-8”的launcher.bat。但事实证明,它们并没有系统地解决编码问题,而且还引入了一些额外的副作用(参见#756、microsoft/vscode-java-debug#622、microsoft/vscode-java-debug#646)。在对该问题进行更多调查后,我们发现我们添加的解决方法似乎没有必要。用户只需要将windows系统区域设置为他们想要的语言,然后JVM和终端将自动更改为与您的系统区域设置兼容的编码。这也是官方Java文档(https://www.java.com/en/download/help/locale.html)推荐的。以下屏幕截图显示了如何在Windows中更改系统区域设置。例如在Java程序中要使用终端输入汉字,可以将Windows系统locale设置为Chinese。默认的Java字符集为“GBK”,cmdcodepage为“936”,这将很好地支持中文字符。这是有关如何处理编码问题的详细文档。年终结语我们即将接近2021年底,在过去的12个月里,我们一直在努力在VisualStudioCode上提供更好的Java开发体验。2022年VisualStudioCode上的Java支持将会有更多令人兴奋的事情,敬请期待未来的更新。一如既往,我们感谢用户和社区的支持,祝大家圣诞快乐,新年快乐!反馈与建议请积极使用我们的产品!您的反馈和建议对我们非常重要,将帮助我们做得更好。给我们反馈的方式有多种填写中文问卷在本帖下留言在我们的GitHubrepo上创建Issue资源以下链接和资源可以帮助您更好地理解JavaonVisualStudioCode相关信息了解更多关于VisualStudioCode更多关于JavaonStudioCodeExploreVisualStudioCode的Java教程一步一步
