отображение символа «£» и «€» с использованием XSL - PullRequest
1 голос
/ 04 марта 2009

Я читаю источник данных, а затем применяю xsl-преобразование к тексту, который выходит, и все символы £ и € удаляются.

Я что-то упускаю из виду? Я пытался изменить кодировку на iso-8859-1, но безрезультатно.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
    <xsl:output encoding="utf-8"/>
    <xsl:output method="html" omit-xml-declaration="yes"/>
    <xsl:param name="Subject"/>
    <xsl:param name="DateString"/>
    <xsl:param name="CurrentSiteUrl"/>

    <xsl:template match="/">
        <html>
            <xsl:apply-templates/>
    </html>
    </xsl:template>
    <xsl:template match="posts>
        <xsl:variable name="postcount" select="count(content)"/>
        <html>
            <head>
            <meta http-equiv="Content-Type" content="text/html;utf-8" />
            </head>

Ответы [ 5 ]

6 голосов
/ 04 марта 2009

Самый простой способ - использовать Числовые ссылки на символы .

&#163; для £ &#8364; для

0 голосов
/ 14 января 2016

У меня возникла такая же проблема (с символом евро). Проблема жестко запрограммирована в FONET.DLL. В классе TrueTypeFont метод MapCharacter записывается как:

public override ushort MapCharacter(char c) 
{
    if (c > Byte.MaxValue) 
        return (ushort) FirstChar;
    return mapping.MapCharacter(c);
}

Таким образом, любой символ со значением больше 255 будет «игнорироваться». Я скачал источники (из https://fonet.codeplex.com/) и изменил метод так:

public override ushort MapCharacter(char c) 
{
    return mapping.MapCharacter(c);
}

Используя эту библиотеку с этим новым методом, символ евро волшебным образом стал видимым!

0 голосов
/ 29 марта 2009

Используйте символы £ и € напрямую. Вот для чего нужен UTF-8.

Просто убедитесь, что вы отправляете файлы XML с правильным типом MIME. Часто используемая text/xml переопределяет кодировку в <?xml ?> декларации !
Настройте сервер так, чтобы он всегда использовал application/xml, если он еще этого не делает.

У вас ошибка в объявлении кодировки HTML. <meta> должен содержать:
text/html;charset=UTF-8.

0 голосов
/ 06 марта 2009

Я что-то упускаю из виду? Я пытался изменить кодировку на iso-8859-1, но безрезультатно.

Это не сработает, так как ‘€ не в iso-8859-1

<xsl:output encoding="utf-8"/>
<xsl:output method="html" omit-xml-declaration="yes"/>

просто догадка, но не могли бы вы сделать

<xsl:output method="html" omit-xml-declaration="yes" encoding="utf-8"/>

Я не знаю, являются ли атрибуты xsl: output конкатинированными или переопределенными.

Вы, вероятно, обнаружите, что сущности выходят закодированными в любом случае.

0 голосов
/ 04 марта 2009

попробуйте использовать & eur; и £ для вывода этих символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...