2010-08-05 4 views
4

Я пытаюсь написать символ кинжала '†' на HTML-странице, которая преобразуется в PDF-документ, но это отображается в формате PDF как 'Как преобразовать символ - "†" в HTML-код?

Я понимаю, что мне нужно использовать HTML-код код для этого символа, который равен †.

Я сделал это успешно для «€», но в этих случаях я написал код непосредственно в HTML. В этом случае я читаю символ из файла XML. Когда я проверяю значение переменной, содержащей символ, оно отображается как '†'.

Я должен отметить, что я попытался чтении Символа & код из файла XML, следующим образом:

<fund id="777" countryid="N0" append="&#8224;" /> 

и

<fund id="777" countryid="N0" append="†" /> 

но и сохраняются в переменной, что и символ, и когда я пишу их на страницу, оба отображаются как «â €». Кроме того, я пробовал следующее:

string code = "&#8224;"; 
string symbol = "†"; 
string htmlEncodedCode = HttpUtility.HtmlEncode(code); 
string htmlEncodedSymbol = HttpUtility.HtmlEncode(symbol); 

tc.Text = fund.Name + code + " " + symbol + " " + 
    htmlEncodedCode + " " + htmlEncodedSymbol; 

но только первые работы. Он представлен в документе как:

FundName† †&#8224; †

Может кто-нибудь предложить, как я могу заставить это работать?

Update:

ответ @James Куррана ниже была правильной. Просто для ясности, я должен был изменить XML в:

<fund id="777" countryid="N0" append="&amp;dagger;" /> 

и в моей C#:

tc.Text = fund.Name + append; 
+0

... Использовать версию, которая работает? –

+0

@Jason, версия, которая работает, является той, которая жестко закодирована в C#. Это не вариант. – DaveDev

+0

http://en.wikipedia.org/wiki/Character_encoding – Incognito

ответ

5

Этот символ обычно известен как «кинжал» и представлен в html объектом: &dagger; & dagger;

+0

сохранение этого в файле XML как ' ' возвращает ошибку: ' Ссылка на необъявленную сущность 'dagger'.' .. Мне нужно ссылаться на нее по-разному в XML? – DaveDev

+0

@DaveDev: К сожалению, XML не понимает одинаковые именованные объекты, как это делает HTML. Однако теоретически можно было бы вернуть его как « кинжал», который (надеюсь) будет работать. – Powerlord

1

Это проблема кодирования. Вероятно, это латинское изображение кинжала в UTF-8. Попробуйте преобразовать кинжал из UTF-8 в ISO-8859-1.

+2

Или попробуйте получить PDF для рендеринга с использованием UTF-8. – Powerlord

+2

Действительно. И прочитайте статью Джоэл Спольски «Абсолютный минимум для всех разработчиков программного обеспечения», абсолютно уверенно знать о юникоде и наборах символов (никаких оправданий!) »: Http://www.joelonsoftware.com/articles/Unicode.html Действительно! –

+0

@R. Bemrose это скорее проблема HTML. По умолчанию для HTTP-содержимого используется ISO-8859-1. Поэтому, если кодировка HTML-страницы не установлена ​​в UTF-8, это то, что будет использовать рендеринг PDF. – JeremyP

0

С файлом XML, что вы, вероятно, хотите сделать что-то вдоль линий:

<fund id="777" countryid="N0" append="&amp;#8224;" /> 

Причина заключается в том, что файл XML будет интерпретировать &amp; как & символ, а остальные как обычный текст. Таким образом, в вашем html вы получите &#8224;, и это должно вас сделать.