Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.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
C# 如何让我的c代码识别ö&引用;?_C#_Utf 8 - Fatal编程技术网

C# 如何让我的c代码识别ö&引用;?

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

如何让我的c#代码识别“ö”

查询的输出很好,所有特殊字符的格式都是可见的,但是在codebehind中,我不能使用它们进行排序

例如:

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
非常感谢你的回答。我将在整理好后返回这里=)