Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET特殊字符问题_Asp.net_Html_Vb.net_Rss - Fatal编程技术网

ASP.NET特殊字符问题

ASP.NET特殊字符问题,asp.net,html,vb.net,rss,Asp.net,Html,Vb.net,Rss,我正在ASP.NET中构建一个自动RSS提要,撇号和连字符的出现呈现出非常奇怪的效果: “这是一个测试”被渲染为“这里”™“这是一个测试” 我已经设法避免了类似的英镑符号(英镑)问题,方法是跳过了符号and并为£;构建了HTML转义手动,如以下摘录所示: sArticleSummary = sArticleSummary.Replace("£", "£") 但是下面的尝试未能解决撇号问题,我们仍然得到了™显示在屏幕上 sArticleSummary =

我正在ASP.NET中构建一个自动RSS提要,撇号和连字符的出现呈现出非常奇怪的效果:

“这是一个测试”被渲染为“这里”™“这是一个测试”

我已经设法避免了类似的英镑符号(英镑)问题,方法是跳过了符号and并为
£;构建了HTML转义手动,如以下摘录所示:

sArticleSummary = sArticleSummary.Replace("£", "£")
但是下面的尝试未能解决撇号问题,我们仍然得到了
显示在屏幕上

sArticleSummary = sArticleSummary.Replace("’", "’"")
数据库中的字符串(SQL2005)出于所有目的似乎都是纯文本的——有人能告诉我们为什么看起来是纯文本的字符串总是以这种方式出现,以及是否有人对如何解决撇号问题有任何想法,我们将不胜感激

谢谢你的帮助

[编辑]

在Vladimir的帮助下,现在的问题似乎是,在数据库和加载到字符串var中的数据之间的某个地方,数据正在从撇号转换为
€™-以前有人看到过这种情况吗,或者有人有什么建议吗

谢谢

我会把“这是一个测试”放在CDATA标签中。很简单,很有效

<![CDATA[Here's a test]]>

发现数据(在SQLServer纯文本中显示时)实际上带有一些MS Word特殊字符。

我猜SQL 2005数据库中的列定义为
varchar(N)
char(N)
text
。如果是这样,则转换是由于数据库驱动程序使用了与数据库中设置不同的代码页设置

我建议将此列(可能包含非ASCII数据的任何其他列)分别更改为
nvarchar(N)
nchar(N)
nvarchar(max)
,然后可以包含任何Unicode代码点,而不仅仅是代码页定义的代码点


我的所有数据库现在都专门使用
nvarchar
/
nchar
来避免这些类型的编码问题。Unicode字段使用了两倍的存储空间,但如果使用这种技术(SQL引擎在内部使用Unicode),则性能差异将非常小。

假设您从数据库中获取Unicode字符,最简单的方法是通过在RSS提要中附加一个XmlDocument对象,让System.Xml.dll为您处理转换。(我不确定rss提要中的元素。)


Thank-刚刚测试过,输入字符串中必须填充€™ 而不是撇号,因为您的示例可以很好地处理硬代码,但是一旦使用了var,它仍然呈现为€™我们将试一试——这些列确实是varchar。您最好正确处理数据,而不是尝试修补数据。如果从Word文档导入,有大量字符可能会导致问题,您必须处理所有字符。谢谢-我们肯定会在输入表单中添加一个消毒剂-Word C&P总是以这样或那样的方式令人头痛。仅供参考:大多数体面的基于JavaScript的WYSIWYG编辑器都有“从Word粘贴”功能函数来对内容进行消词,这样它们可能适合您的输入场景(或者提升算法在服务器端实现)。
        XmlDocument rss = new XmlDocument();
        rss.LoadXml("<?xml version='1.0'?><rss />");
        XmlElement element = rss.DocumentElement.AppendChild(rss.CreateElement("item")) as XmlElement;
        element.InnerText = sArticleSummary;
        XDocument rss = new XDocument(
            new XElement("rss",
                new XElement("item", sArticleSummary)
            )
        );