Есть ли способ заставить VS Code не заменять неизвестные текстовые символы? - PullRequest
1 голос
/ 28 апреля 2020

В настоящее время я использую код VS для написания скрипта PowerShell. Как часть этого сценария, REGEX используется для замены / удаления нетипичного символа, который довольно часто попадает в данные и вызывает проблемы в дальнейшем. Символ (U + 2019), и когда скрипт открывается в коде, он постоянно заменяется на (U + FFFD)

, таким образом, строка: $user.Name = $user.Name -Replace "'|\’|\(|\)|\s+",""

Постоянно становится: $user.Name = $user.Name -Replace "'|\�|\(|\)|\s+",""

, пока он не будет изменен вручную. Поскольку я могу вставить символ U + 2019, как только файл откроется, а затем запустить код, я предполагаю, что код VS может правильно его интерпретировать, и проблема заключается в загрузке файла. Есть ли какая-либо опция, которую я могу установить на остановить это заменить при открытии файла?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

Если я сохраню в Vscode как кодировку Windows 1252, я вижу, что символ "’" изменится на при следующем открытии. Я думаю, что проблема в том, что Vscode не распознает Windows 1252. Он открывает его как UTF8. Если вы снова откроете кодировку Windows 1252, она отобразится правильно. Другие кодировки работают нормально, даже для отображения символа. Это включает в себя utf8 no bom.

Даже Powershell 5 не имеет этой проблемы с Windows 1252, только Vscode. Устанавливать и получать содержимое в Powershell 5 по умолчанию равно Windows 1252.

"’" | set-content file
get-content file

’

В Powershell 7 фактически возникнет та же проблема:

get-content file

�
0 голосов
/ 28 апреля 2020

Похоже, все сводится к кодированию. Код Visual Studio по умолчанию использует UTF-8 и может в целом правильно обрабатывать сохранение / просмотр Юникода.

Если проблема в Открытие файла, то это случай, когда код Visual Studio неправильно интерпретирует кодировку файла при открытии файла. Вы можете изменить кодировку ( Настройка кодировки VS Code ) с помощью настроек в VS Code для кодировки файла c (например, UTF-8, UTF-8BOM, UTF-16LE и др. c.) С помощью изменение настройки "files.encoding".

"files.encoding": "utf8bom"

Если проблема заключается в сохранении файла, то он сохраняется как ASCII (он же. Windows -1252), а не как правильный UTF-8 или эквивалент При сохранении символ заменяется символом замены (U + FFFD), который будет отображаться при следующем открытии.

Примечание. Кодировка по умолчанию, используемая для Windows PowerShell v5.1: Windows -1252, и может быть поэтому сохранение сценариев со специальными символами может не работать. PowerShell Core v6 + по умолчанию использует UTF-8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...