2010-08-03 3 views
1

У меня есть программа, которая в двух словах считывает значения из базы данных SQL и записывает их в текстовый файл с разделителями табуляции.Исправить особые символы в строке

Проблема заключается в том, что некоторые из значений в базе данных имеют специальные символы (TM, тире, эллипсис и т. Д.). Когда они записываются в текстовый файл, форматирование теряется, и они встречаются как нежелательные «â» ¢ или «и т. д.»

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

Это ASCII или UTF-8? Если это один из тех, как я могу его исправить, прежде чем он будет записан в текстовый файл.

Вот как я создаю текстовый файл (где feedStr является StringBuilder)

objReader = New StreamWriter(filePath) 
objReader.Write(feedStr) 
objReader.Close() 

ответ

2

кодировка по умолчанию для StreamWriter является UTF8 (без знака порядка байтов). Ваш файл результатов в порядке, вопрос в том, что вы его открываете впоследствии? Если вы откроете его в текстовом редакторе, поддерживающем UTF8, символы должны выглядеть так, как вы хотите.

Вы также можете написать текстовый файл в другой кодировке, например, изо-8859-1 (latin1)

objReader = New StreamWriter(filePath, false, Encoding.GetEncoding("iso-8859-1")) 
+0

Микаэль, ты человек! Это работало как шарм! Отличный ответ! – s15199d

+0

ALMOST ... Я изменил его на Encoding.GetEncoding ("utf-8") Это исправило все мои специальные символы. Но теперь он галочки с ограничителем ControlChars.Tab. FYI ... мой выходной файл должен быть закодирован в кодировке UTF-8, b/c - в Google, и это необходимый формат. – s15199d

+0

Возможно, вы использовали Encoding.UTF8 вместо GetEncoding. –

Смежные вопросы