2014-01-09 2 views
0

Я извлекаю некоторые данные из базы данных SQL Server и записываю их в текстовый файл, и, по большей части, процесс работает по назначению. Есть одна проблема, которую я не смог решить. Апострофы появляются как: ’.Проблема с апострофами при записи в текстовый файл

Вот код записи в файл:

using (var writer = new StreamWriter(filePath, false)) 
{ 
    foreach (var textLine in dataList) 
    { 
     writer.WriteLine(textLine); 
    } 
} 

Я попытался с помощью Encoding.Default и Encoding.Utf8 по тексту, но это не делает разницы.

Я открываю файлы в «Блокноте», «Блокнот ++» и «UltraEdit».

Может ли кто-нибудь помочь мне определить эту проблему?

+2

Его либо культура человека, вставляющего его, либо вытягивая его. –

+0

@ARM Глубоко проникающая, возможно, даже семантическая проницательность. –

ответ

2

Вы уверены, что хотите сохранить реальный апостроф (код символа 39), а не один из символов умной цитаты? https://en.wikipedia.org/wiki/Quotation_mark_glyphs

+0

Я не. Текст, который записывается в файл, может быть введен многими способами (напечатан, скопирован/вставлен и т. Д.). В некоторых случаях апостроф проявляется хорошо, а в других, я получаю символы, показанные в вопросе выше. –

+0

Если кто-то копирует, особенно если это делается из Word, скорее всего, они вставляют смарт-цитату. Возможно, вам потребуется предварительная обработка ввода для их преобразования, если это необходимо. Или просто признайте тот факт, что вам может потребоваться хранить широкие символы. –

+2

@RONS Похоже, вы получаете кудрявые апострофы: http://stackoverflow.com/a/2477480/424129 –

0

’ - это байтовый поток UTF-8 для символа , отображаемый как символы ANSI с кодовой страницей Windows 1252.

У UltraEdit не должно возникнуть проблемы с обнаружением созданного текстового файла при открытии для кодирования в UTF-8 и отображать его правильно.

Смотрите мой ответ на bad character encoding after xsl 1.0 transform Подробную информацию о том, как автоматическое обнаружение UTF-8 кодировкой работает в UltraEdit и что вы можете сделать, чтобы открыть UTF-8 закодированный файл, если автоматическое определение не включается в конфигурации (Advanced - Конфигурация - обработка файлов - обнаружение Unicode/UTF-8) или не удается, когда первый символ UTF-8 не находится в пределах первых 64 КБ.

Вы можете помочь текстовым редакторам по обнаружению кодировки UTF-8 для файла путем записи в файл сначала 3 байта 0xEF 0xBB 0xBF, отображаемого в виде строки ANSI как , прежде чем записывать строки списка данных в текстовый файл. 0xEF 0xBB 0xBF - это маркер порядка байтов (BOM) для файла, закодированного в UTF-8, который распознается текстовыми редакторами, но не отображается.

Персонаж также доступен на кодовой странице Windows 1252 (шестнадцатеричное значение 0x92) и поэтому может быть также сохранен в текстовом файле с преобразованием из UTF-8 в ANSI. Но список данных может содержать также символы из таблицы Unicode, недоступные на странице системного кода, и поэтому лучше создать файл в виде текстового файла в кодировке UTF-8, а не в текстовом файле ANSI.

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