Проблема апострофа в RTF - PullRequest
       29

Проблема апострофа в RTF

1 голос
/ 15 февраля 2010

У меня есть функция в пользовательском веб-приложении CRM (старая версия VB.Net около 2003 года), которая берет набор полей из базы данных и объединяет их с держателями в набор шаблонных документов на основе RTF. Они генерируют объединенные письма и документацию. Код по существу проходит по каждой строке файла шаблона RTF и заменяет любые экземпляры значений заполнителей текстом из записи базы данных. У меня проблема в том, что пользователи вставили апостроф определенного типа в веб-приложение (и, следовательно, в базу данных), который неправильно отображается в результирующем файле RTF. Это рендеринг, как это -

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

Есть идеи?

Ответы [ 2 ]

1 голос
/ 16 февраля 2010

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

Чтобы сделать замену, как только вы выяснили персонажа, вы должны сделать что-то подобное в Vb,

text.Replace(ChrW(2001), "'")

Обратите внимание, что вы не сможете легко разобраться в этом с помощью текстового редактора, поскольку он также может быть искажен вставкой из буфера обмена. Возможно, вы захотите распечатать отладку значений ascii из кода. Для этого вы можете использовать функцию AscW.

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

    oWriter = New System.IO.StreamWriter(path, False, System.Text.Encoding.ASCII)
0 голосов
/ 15 февраля 2010

Похоже, вы, вероятно, хотите кодировать символы вне 8-битного диапазона (> 255).

Вы можете сделать это, используя \ uNNNN согласно статье в википедии .

...