VSCode жалуется, что в файле Ruby UTF-8 есть недопустимый многобайтовый символ (US-ASCII) - PullRequest
2 голосов
/ 09 мая 2019

Использование Rails 5.2 и Ruby 2.3 (по умолчанию файлы ruby ​​имеют формат UTF-8).

Если я проверю файл в терминале:

 file -I <filename>.rb

показывает UTF-8:

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

Тем не менее, в файле есть строка с немецким символом умлаута, как вы можете видеть на скриншоте.

enter image description here

В предыдущей версии 2.0 Ruby вы могли использовать магические комментарии , чтобы сообщить Ruby кодировку файлов, но, очевидно, этот файл уже UTF-8.

Я пытаюсь понять, что это 2 вещи:

  1. Как файл UTF-8 получил этот символ US-ASCII внутри него?

  2. Как я могу это исправить (чтобы VS-Code не показывал его как неправильный)? Интересно, возможно ли что-то делать с расширением или настройкой в ​​VS-коде?.

В ответ на (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

EDIT

Нет необходимости отвечать на вопрос 1, потому что, если я удаляю символ и набираю его снова, появляется та же ошибка. Теперь я знаю, что на самом деле не имеет значения, как он попал в файл, просто нужно знать, что выдает предупреждение.

1 Ответ

1 голос
/ 10 мая 2019

Я думаю, что проблема в линтере.

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

в settings.json Юникод не включен по умолчаниюдля ruby.lint, так что вам нужно сделать это вручную.

...