Miguel Altamirano Morales Ответов: 1

Создайте текстовый файл с кодировкой UTF-8 из VB net


Всем добрый день.

Я пытаюсь сгенерировать текстовый файл для нашего поставщика электронных счетов-фактур в цифровую фирму и сгенерировать XML-и PDF-файлы для компании, в которой я работаю.

Я использую команду "FileOpen" в VB NET 2017, как и в VB 6.0 и VB Net 2010 несколько лет назад, и на самом деле я правильно создаю выходной текстовый файл.

это и есть код:

strFileName = strPath + "Facturas_Texto\" + IDFiscal + ".txt"
 If System.IO.File.Exists(strFileName) Then
    System.IO.File.Delete(strFileName)
 End If
 FileOpen(1, strFileName, OpenMode.Output)

Я использую оператор "печать", чтобы написать необходимые строки одну за другой.

Теперь дело в том, что наш поставщик хочет, чтобы файл соответствовал UTF-8 и избегал BOM.

Я читал эту кодировку символов, и избегание спецификации было вопросом создания HTML и XML-файлов, но я никогда раньше не пытался достичь этого в текстовом файле, специально генерируя его через VB net 2017.

Я видел, что могу отредактировать файл через блокнот и сохранить его с помощью этой кодировки UTF-8, но мне нужно сделать это с помощью кода vB net.

Я был бы очень признателен за любую помощь или предложение о том, как это сделать или где искать информацию об этом.

Большое спасибо.

Что я уже пробовал:

Я ищу в интернете, пытаясь найти способ сделать это.

1 Ответов

Рейтинг:
8

Maciej Los

Вы должны использовать StreamWriter[^] класс, который поддерживает кодирование.

[РЕДАКТИРОВАТЬ]
Что касается UTF-8 без BOM... Пожалуйста, прочтите важную заметку о Кодирование.Собственность кодировке utf8 (системы.Текст)[^]

Цитата:
Чтобы создать экземпляр кодировки UTF8, которая не предоставляет спецификацию, вызовите любую перегрузку конструктора UTF8Encoding.


Итак, я бы посоветовал почитать Конструктор UTF8Encoding (Boolean, Boolean) (System.Text)[^] с параметрами, установленными на false и true.

[/РЕДАКТИРОВАТЬ]

Примечание: Если вы хотите использовать данные для дальнейшей обработки, вы можете записать их непосредственно в xml.
Видеть:
Сериализация XML – советы и рекомендации[^]
Сериализация и десериализация XML: Часть 1[^]
Сериализация и десериализация XML: Часть 2[^]
Полный пример сериализации и десериализации пользовательских коллекций классов[^]


Miguel Altamirano Morales

Еще раз Здравствуй, Мацей, и большое спасибо за твой совет. Ты такой хороший человек.

Я собираюсь прочитать все о классе StreamWriter, как вы предлагаете. Я надеюсь, что он будет пригоден для написания больших строк, разделенных трубами.

Прямо сейчас у меня нет необходимости писать XML напрямую, но я также буду читать об этом. Я не хочу оставаться в сомнениях по этому поводу.

Салюдо из Мехико-Сити !!!

Maciej Los

Привет, Мигель!

Saludos из города Белосток!
Овации
Мацей

Miguel Altamirano Morales

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

Я достиг этого с помощью следующего кода в моей VB сети:

Частный Суб Graba_Texto()
Дим писателя, так как новая система.ИО.Модулю записи StreamWriter(strFileName, параметр openmode.Добавьте, Системы.Текст.Кодирование.Кодировке utf8)
писатель.WriteLine(strWork)
писатель.Закрывать()
Конец Подводной Лодки

"strWork" - это строка, которую моя программа ранее организовала с необходимыми данными для нашего PAC, чтобы цифрово закрепить наш электронный счет-фактуру.

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

Я все еще не очень ясно вижу смысл в кодировании класса utf8; как видите, мне не нужно было его использовать. Но я собираюсь прочитать его более внимательно, наряду с другими темами, которые вы мне предложили. Я должен воспользоваться контактом с такими людьми, как вы, для интеллектуальных целей и личного совершенствования.

Еще раз большое спасибо, дорогой друг.

Maciej Los

Всегда пожалуйста, мой друг.

Овации,
Мацей