VS Code报错:非法字符、不是语句

时间:2024-04-07 11:57:03

问题描述

在MacOS系统上安装了VS Code,配置了Java开发环境。每次打开VS Code的时候,随便输入任何代码,都能看到代码的最后有一个红色波浪线,然后PROBLEMS标签页中就会报出大量的错误。错误的内容分两种:“非法字符:xxxx”(非法字符的内容是多个Unicode编码,但是每次出现的都是同一批)和“不是语句”。报错截图是这样的:
VS Code报错:非法字符、不是语句
如果关闭VS Code然后重新打开,那么这些代码就不会报错了。然而如果继续写新的代码,那么新的代码还会报出这些错误来。甚是头疼。

问题解决

首先从网上查阅的资料来看,会出现这个问题的原因只有一个——字符编码错误。简而言之,我们肉眼看代码觉得没问题,但是编译器因为字符编码的问题识别成了别的东西。既然问题已经确定,只需要搞明白为什么字符编码会出错,并解决这个问题即可。

尝试一:编译器字符编码

首先想到的是会不会是VS Code的字符编码错了。一般来讲它的字符编码应该是默认UTF-8才对。在首选项中寻找encoding的设置,然后设置为utf8即可。
VS Code报错:非法字符、不是语句

尝试二:操作系统字符编码

我自己在解决这个问题时,第一个尝试失败了,因为它确确实实默认就是utf8。那么我感觉有可能是苹果的系统设置有问题,看起来打出来的字是正常的英文字母,实际上是其他的什么奇怪东西。至于为什么能正确显示出来就不得而知了。
苹果电脑设置字符集编码的方式如下:在zshrc中写入设置即可(MacOS 10.15版本的terminal默认用的是新的命令行,也就是zsh,所以要在zshrc中设置,否则关掉terminal后就失效了。如果是旧版本的则在bash_profile中设置即可)。

  1. 打开terminal
  2. 输入vim .zshrc,如果是旧版本的MacOS则输入vim .bash_profile
  3. 键入i进入编辑模式
  4. 在配置文件中键入LANG=zh_CN.UTF-8
  5. 键入ESC退出编辑模式
  6. :wq退出vim编译器
  7. 在terminal中输入source .zshrc让配置生效,如果是旧版本的系统则输入source .bash_profile

尝试三:输入法的问题

事实上第二次尝试也失败了,因为MacOS的默认字符编码也是UTF-8。所以并没有解决问题。后来我想起来,自己曾经更改过输入法。新系统伊始有简体中文和英文输入法,后来我将英文输入法由ABC改为美国,并增加了德文、日文输入法。有可能是输入法的原因,导致输入的字符编码有些许不同,尤其是日语输入法的嫌疑比较大。
想到这个我就删除了德文、日文、美国输入法,并改用ABC,发现这个问题果然解决了。后来又反复试了几次,发现即便输入法改回来了,如果在VSCode中输入时输入法为中文简体,也会偶发这个问题。但是如果使用ABC进行输入,那么这个问题就不会复现。

总结

出现这个问题的本质原因是写代码时的字符编码问题。编译器本身、操作系统和输入法都有可能导致这一问题。