Объединение файлов SQL с командой `copy` в пакетном файле приводит к неверному синтаксису, поскольку он добавляет невидимый символ` U + FEFF` - PullRequest
0 голосов
/ 05 апреля 2019

В событии перед сборкой выполняется пакетный файл для объединения нескольких файлов SQL в один.
Это делается с помощью этой команды:

COPY %@ProjectDir%\Migrations\*.sql %@ProjectDir%ContinuousDeployment\AllFilesMergedTogether.sql

Все выглядит нормально, нокаким-то образом результат приводит к неправильной синтаксической ошибке.
После двух часов исследования выясняется, что проблема вызвана невидимым символом, который остается невидимым даже при использовании блокнота ++.
При использовании веб-сайта онлайн персонаж был обнаружен иis U+FEFF показано на следующем рисунке.
enter image description here

Вот два входных сценария.
PRINT 'Script1'
PRINT 'Script2'

Вот выходные данные, заданные командой копирования.
PRINT 'Script1' PRINT 'Script2'

Дополнительная информация:

  • Пакетный файл кодируется с UTF-8
  • Входные файлы кодируются с помощью UTF-8-BOM
  • Выходной файл кодируется с помощью UTF-8-BOM.
    Я не уверен, что можно изменить вывод кодирования команды copy.
    Я пытался и потерпел неудачу.

Что должно быть на Дону?e, чтобы искоренить этого крайне разочаровывающего паразитического персонажа?

1 Ответ

0 голосов
/ 05 апреля 2019

Оказалось, что изменение кодировки входных файлов на ANSI решает проблему.
Нет больше надоедливых персонажей.
Кроме того, при этом изменяется кодировка результирующего файла на UTF-8 вместо UTF-8-BOM, что, на мой взгляд, замечательно.

Кодировка может быть изменена с помощью Notepad ++, как показано на следующем рисунке. enter image description here

...