C# 如何让我的c代码识别ö&引用;?
如何让我的c#代码识别“ö” 查询的输出很好,所有特殊字符的格式都是可见的,但是在codebehind中,我不能使用它们进行排序 例如:C# 如何让我的c代码识别ö&引用;?,c#,utf-8,C#,Utf 8,如何让我的c#代码识别“ö” 查询的输出很好,所有特殊字符的格式都是可见的,但是在codebehind中,我不能使用它们进行排序 例如: if (link.Contains("teborg")) { CountRss++; Response.Write("<p class='RssCont'><a href='" + link + "' target='new'><b>" + title + "</b></a><b
if (link.Contains("teborg"))
{
CountRss++;
Response.Write("<p class='RssCont'><a href='" + link + "' target='new'><b>" + title + "</b></a><br/>");
Response.Write(description + "</p>");
}
if(link.Contains(“teborg”))
{
CountRss++;
回答。写(“
”);
响应。写入(描述+“
”;
}
将给出几个标题为“哥德堡”的结果,但:
if (link.Contains("Göteborg"))
{
CountRss++;
Response.Write("<p class='RssCont'><a href='" + link + "' target='new'><b>" + title + "</b></a><br/>");
Response.Write(description + "</p>");
}
if(link.Contains(“哥德堡”))
{
CountRss++;
回答。写(“
”);
响应。写入(描述+“
”;
}
将不会给出任何结果。如果代码正确呈现链接,则应对其进行编码,结果将不包含非ASCII字符 根据单词在url中的位置,您可能需要搜索不同的文本以找到匹配项
请注意,使用适当的Uri类来处理url将使工作更轻松。另外,请确保您的链接编码正确,以避免页面上的脚本注入攻击。您的代码非常合理,与代码一样好,问题在于数据。这里有四种普遍的可能性 第一个是编码问题,但我怀疑情况是否如此,因为你说它的渲染效果很好,所以我高度怀疑这就是问题所在,否则你也会有问题 第二个是组合的
o
和由o
和组合的diaresis构成的o
之间的冲突。这不太可能,但将字符串放入带有link.Normalize()
的NFC中会捕捉到这一点
第三,由于它是一个URI,所以它可能是URI形式,而不是IURI形式。因此它将是G%c3%b6teborg
(实际上,它可能是G%c3%b6teborg
,G%c3%b6teborg
或G%c3%b6teborg
)。使用Uri.UnescapeDataString(link)
或用于此的各种方法中的任何一种来取消对字符串的scape。这是我敢打赌的
第四,它可能是XML转义的(因为从使用的名称判断它来自RSS),在这种情况下,HtmlDecode
应该将其归类为禁止DTD定义其他实体,HTML编码是XML编码的超集。但是,只有在使用基于文本而不是基于XML的方法解析RSS时,这才有可能实现,在这种情况下,您会遇到更大的问题。如果您使用的是XmlReader、XmlDocument或任何其他基于XML的类,那么在必要时已经为您完成了解码,所以这不是问题所在
因此第三个似乎是最有可能的,而Uri.UnescapeDataString(link)
似乎是最有希望的
您可能需要对区分大小写的精确字符进行不太精确的检查。其他方法将允许您匹配
göteborg
和gÖteborg
。还有一些可以匹配Goetborg
(用英语将ö
音译为oe
是很常见的-德语比瑞典语更常用,但也可以这样做)。(例如,匹配英语Gothenburg
或丹麦语gøteborg
是一个更复杂的问题)。没有解决你的实际问题,但是if(link.Contains(“teborg”)
做了同样的事情并且更具可读性:英语对应词是“如果链接包含“teborg”,那么…”您确定链接
字符串包含Göteborg
而不是Göteborg
?使用包含的字符串比较区分大小写。此外,吹毛求疵-无需使用==true
,因为包含的
已经返回了一个布尔值。您能给出显示此行为的两个字符串吗?ö
有不同的表示法:一次作为单个代码点,另一次作为o
+组合
@Thomas-我的方法?我只是问你的理由。也许你的链接包含了G%c3%b6teborg
非常感谢你的回答。我将在整理好后返回这里=)