Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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#_String_Xaml_Windows 8 - Fatal编程技术网

C# &引用&&引用;撇号显示了一个符号

C# &引用&&引用;撇号显示了一个符号,c#,string,xaml,windows-8,C#,String,Xaml,Windows 8,我从web服务端点获取数据,并将其放入for-each循环中的列表中。该服务从Wordpress网站获取数据 var list = new ItemList ( (string)data.id.ToString(), (string)data.name, (string)subcategory ); 然后我在XAML页面上打印这个。代码运行良好,它成功地从服务中获取数据并将其打印到我的windows 8应用程

我从web服务端点获取数据,并将其放入for-each循环中的列表中。该服务从Wordpress网站获取数据

 var list = new ItemList
      (
         (string)data.id.ToString(),
          (string)data.name,

          (string)subcategory

     );
然后我在XAML页面上打印这个。代码运行良好,它成功地从服务中获取数据并将其打印到我的windows 8应用程序页面上

但是在
(string)data.name中,
,即项目名称,如果名称包含“&”,则在应用程序中显示为
$\038。此外,如果项目名称包含“'”和撇号s,则它将显示为

例如,D&G,显示为D$#038;G

“&”和“'”显示为这些奇怪的符号


我该如何摆脱这些问题并进行修复,以便它们在应用程序中正确呈现。

我冒着给你一个错误提示的风险,因为我猜你说的是Windows 8应用商店应用程序(XAML),因此你无法访问.NET上的所有类,但是

解码HTML实体怎么样

检查此HttpUtility方法:

选中,它位于
System.dll
上,因此可用于Windows 8应用商店应用程序

您需要在Visual Studio项目中添加对
System.Web
的引用。

您可以

如果不想添加其他库,也可以使用

public string Decode(string text)
{
    var replacements = new Dictionary<string, char> {
      { "&#8217;", ''' },
      // ...etc
    }

    var sb = new StringBuilder( text );

    foreach( var c in replacements.Keys ) {
      sb.Replace( c.ToString(), replacements[c] );
    }

    return sb.ToString();
}
公共字符串解码(字符串文本)
{
var replacements=新字典{
{ "’", ''' },
//…等等
}
var sb=新的StringBuilder(文本);
foreach(replacements.Keys中的var c){
sb.替换(c.ToString(),替换[c]);
}
使某人返回字符串();
}

看起来服务正在返回XML转义实体<代码>&指代码为(十进制)38的字符(即
&
)<代码>’
与之类似,表示8217代码(即

您可以使用
System.Web.HttpUtility.HtmlDecode(inputString)
对其进行解码,但这需要对System.Web的引用。如果您不想或无法引用,可以尝试以下方法:

var xml = new XmlDocument();
xml.LoadXml("<x>" + inputString + "</x>");
var output = xml.InnerText;
var xml=new XmlDocument();
LoadXml(“+inputString+”);
var output=xml.InnerText;
给定
测试&8217;stuff“&;things
,它将返回
测试“stuff”和things


如果可以的话,我会选择
HtmlDecode()
,但绝对要避免使用自己的解码器,除非你别无选择。

这对这些字符不起作用
HtmlDecode
将解码
&但不是
$#038
@DavidKhaykin我要在控制台应用程序中尝试一下自己。。。如果你是对的,我将删除这个答案。我猜你应该对答案投反对票吗。。。?记得我说过“我要冒这个险…”大卫哈金顺便说一句<代码>$#038不是OP试图解码的文本。这就是应用程序在UI中显示的内容,我错了吗?你猜对了。我不经常投反对票,但当我投反对票时,这是因为答案是错误的。没错,但这意味着他的应用程序中的接收端正在进行编码以生成该字符串。在(string)data.name和UI层之间会发生什么?如果进行调试,data.name是否已经包含这些“奇怪的符号”(实际上只是HTML编码的符号),或者data.name是否只包含原始的&or',然后UI最终显示符号?@DavidKhaykin web服务源中的项目名称显示得很好,没有这些字符。当我在应用程序UI中使用I时,甚至当我在windows powershell中调用服务url查看结果时,名称也会显示为奇怪的符号。@当你说“web服务源”时,你是指“web服务响应”吗?或者什么?web服务是为了从网站获取数据而构建的。这就是来源。这些名字在网站上显示得很好。但是,当我试图通过端点(例如www.test.com/items/)访问这些名称时,无论是在我的应用程序ui中还是在power shell中,响应都会显示这些名称symbols@Tester你说的是爬虫吗?除了你的“原始解决方案”,不是和我提供的答案几乎相同吗当我发布我的答案时,我还没有看到你的答案。我正在写我的“原始解决方案”好吧。。。有时会发生这种情况!关于“原始解决方案”,你知道我这样称呼它是对的P@DanielGrankin我尝试了`(string)System.Net.WebUtility.HtmlDecode(data.title),`,但没有解决任何问题。我尝试了这个,但出现了构建错误。我似乎没有引用system.web。您可能只需要在Visual Studio中包含对system.web的引用。右键单击引用,选择添加引用。在“程序集”下,您应该可以找到System.Web。我刚才在下面对此进行了评论。我好像找不到它。我的应用程序是windows 8应用商店应用程序。当我去添加一个ref时,在assemblies下,它在顶部写着,针对Windows应用商店应用的目标是:.Net