Странная проблема при использовании параметра «Добавить новый элемент» для добавления текстового файла в мой проект VS2008

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

Я использую контекстное меню правой кнопки мыши в проводнике проекта, чтобы «Добавить новый элемент», затем выбираю текстовый файл из меню, меняю имя файла и нажимаю кнопку «Добавить».

Отображается пустой шаблон и что бы я ни набирал, ни сохранял, при чтении файла получаю 3 мусорных символа в начале файла. Вы не можете видеть их в редакторе, но если вы просматриваете файл в шестнадцатеричном редакторе, вы можете их увидеть.

Прежде чем вы спросите, нет, это не моя процедура чтения, которая создает символы, поскольку я использовал внешнее редактирование для просмотра файла, и они там. Я думаю, что Visual Studio помещает их туда.

Вот как выглядит текст в HEX-редакторе:

ВЫБРАТЬ ...и т.д..

^^^ Что не сулит ничего хорошего для моего оператора SQL.

Есть предположения?


person carny666    schedule 26.04.2011    source источник


Ответы (1)


Это просто метка порядка следования байтов UTF-8. Это три байта, но один символ.

Будут ли они проблемой для вас, будет зависеть от того, как ваш проект читает файл. IIRC, StreamReader прочитает и разделит его, так что все будет в порядке.

Когда вы сохраняете файл, вы можете перейти в «Файл / Дополнительные параметры сохранения» и выбрать кодировку

Юникод (UTF-8 без подписи)

чтобы избежать спецификации. Вероятно, было бы лучше просто изменить свой код, чтобы справиться с этим.

person Jon Skeet    schedule 26.04.2011
comment
Большое Вам спасибо. Я ценю совет, к сожалению, я использую VS2008 для поддержки устаревшей классики ASP. Я не совсем уверен, как это сделать с помощью объекта Scripting.FileSystemObject. - person carny666; 27.04.2011
comment
@ carny666: Похоже, вы, вероятно, просто хотите изменить способ сохранения файла, как во второй половине моего ответа. - person Jon Skeet; 27.04.2011
comment
@JohnSkeet Прошу прощения, я не знал, что мне нужно было нажать на галочку, чтобы принять ответ на SO. - person carny666; 04.05.2011