为什么在我的字符串中添加了一些非预期的符号?

时间:2014-04-23 07:21:39

标签: c# string console-application

我编写了一个控制台应用程序,它从Sharepoint列表中的某些字段中获取字符串。然后我简单地将字符串写入控制台。这适用于大多数领域。有一个MultiLineTextField启用了RichText,我必须remove all the html-tags,导致此问题。

即使删除了所有标签,字符串似乎也包含从未添加到字符串中的问号。最奇怪的是,当我设置断点并查看字符串的值时,没有问号,但它们突然出现在控制台输出上。

我唯一能想到的就是修剪弦乐。因为有时候它们出现在实际字符串的前面,有时候它们处于和它之间,但从不在它们之间。

所以这就是我的尝试:

myString = myString.Trim();
myString = myString.Replace("?",string.Empty);

但这并没有解决问题。除此之外,如果其中一个字符串应该包含问号,这将不是一个聪明的解决方案。有关详细代码,请参阅上面的链接。

同样Convert.ToBase64String(Encoding.UTF8.GetBytes(myString))给出了以下输出:

  

4oCLTWVobCwgRWllciwgV2Fzc2VyLCBIYWNrZmxlaXNjaCA =

2 个答案:

答案 0 :(得分:5)

字符串末尾可能有一些非打印unicode(或可能是低ASCII)字符。控制台具有不同的编码,并且通常会呈现?。基本上:使用索引器(yourString[n])或yourString.ToCharArray()来调查字符串中实际位于?位置的内容。


通过编辑,我们可以看到字符串在开头有一个zero-width space(十进制8203):

enter image description here

答案 1 :(得分:1)

听起来你可能遇到unicode字符问题。您有可能将字符串输出为ASCII而不是Unicode。看看at this question,因为您可能会遇到同样的问题。