我正在读取数据源,然后对出来的文本应用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>
答案 0 :(得分:6)
答案 1 :(得分:0)
尝试使用&amp; eur;和&amp;#163;输出那些符号。
答案 2 :(得分:0)
我错过了一些明显的东西吗?我已经尝试将编码更改为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的属性是否已被连接或重写。
您可能会发现这些实体无论如何都会被编码。
答案 3 :(得分:0)
直接使用£和€字符。这就是UTF-8的用途。
确保您正在发送具有适当MIME类型的XML文件。经常使用text/xml
overrides encoding in <?xml ?>
declaration!
如果服务器尚未执行此操作,请将服务器配置为始终使用application/xml
。
您在HTML编码声明中遇到错误。 <meta>
应包含:
text/html;
的 charset=
强> UTF-8
。
答案 4 :(得分:0)
我遇到了同样的问题(使用欧元符号)。问题是在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);
}
在这个新方法中使用这个库,欧元符号神奇地变得可见!