VSCode 抱怨 Ruby UTF-8 文件具有无效的多字节字符 (US-ASCII)

VSCode complains a Ruby UTF-8 file has invalid multibyte char (US-ASCII)

使用 Rails 5.2 和 Ruby 2.3(ruby 文件默认为 UTF-8)。

如果我在终端中检查文件:

 file -I <filename>.rb

它显示 UTF-8:

<filename>.rb: text/x-ruby; charset=utf-8

然而在文件中有一个带有德语变音字符的字符串,如您在屏幕截图中所见。

在 Ruby 的 v2.0 之前你可以使用 magic comments 来告诉 Ruby 文件编码,但显然这个文件已经是 UTF-8。

我想弄清楚的是两件事:

  1. UTF-8 文件是如何在其中获取这个 US-ASCII 字符的?

  2. 我该如何修复它(这样 VS-Code 就不会显示为不正确)?我想知道是否与 VS-Code 中的扩展或设置有关?

作为对 (1) 的回答,我猜它可能是从一个编码为 US-ASCII(如 Word)的文件中复制和粘贴的?

但是,如果我删除字符并使用 OPT + u + u 在我的 Mac 上再次键入它,那么 VS Code 仍然会抱怨。因此问题 2.

关于 (2) 我检查了这个:

echo LC_TYPE

它是空的。

所以我将export LC_TYPE=$LANG添加到我的~/.bash-profile并重新启动VSCode,但这并没有解决它(在VSCode集成终端LC_TYPE仍然为空)。 Ref

编辑

没有必要回答问题1,因为如果我删除字符并重新输入,同样的错误出现。所以我现在知道它是如何进入文件的并不重要,只需要知道是什么产生了警告。

我认为问题出在 linter 中。

"ruby.lint": {
       "reek": true,
       "rubocop": true,
       "ruby": {
         "unicode": true,
       },
       "fasterer": true,
       "debride": false,
       "ruby-lint": false
   },

in settings.json unicode 默认情况下 未打开 ruby.lint 所以你需要手动完成。