【问题标题】:VSCode complains a Ruby UTF-8 file has invalid multibyte char (US-ASCII)VSCode 抱怨 Ruby UTF-8 文件具有无效的多字节字符(US-ASCII)
【发布时间】:2019-05-09 19:38:31
【问题描述】:

使用 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)的文件中复制和粘贴的?

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

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

echo LC_TYPE

它是空的。

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

编辑

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

【问题讨论】:

    标签: ruby-on-rails ruby utf-8 visual-studio-code vscode-settings


    【解决方案1】:

    我认为问题出在 linter 上。

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

    settings.jsonunicode 默认情况下对于 ruby​​.lint 未打开,因此您需要手动执行此操作。

    【讨论】:

      猜你喜欢
      • 2011-04-10
      • 2010-12-16
      • 2011-07-25
      • 2011-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多