我有这段特殊的代码,但它没有用。
text = text.Replace("\xEF\xBF\xBD", "?");
是否有人知道如何在C#"\xEF\xBF\xBD"
中将文字"?"
替换为String
。
答案 0 :(得分:14)
你必须逃避反斜杠。
text = text.Replace("\\xEF\\xBF\\xBD", "?");
或者,您可以使用@符号转义整个字符串:
text = text.Replace(@"\xEF\xBF\xBD", "?");
答案 1 :(得分:8)
简短回答(猜一点):
text = text.Replace("\xFFFD", "?");
了解Unicode和character encodings,尤其是utf-8.
答案很长:
嗯,你的意思是“\ xEF \ xBF \ xBD”吗?也就是说,由这些字符组成的字符串:
backslash, uppercase latin character E, uppercase latin character F, backslash, uppercase latin character B, uppercase latin character F, backslash, uppercase latin character B, uppercase latin character D
然后,答案是:
text = text.Replace(@"\xEF\xBF\xBD", "?");
或者你是由C#转义序列“\ xEF \ xBF \ xBD”描述的字符序列,即:
LATIN SMALL LETTER I WITH DIAERESIS, INVERTED QUESTION MARK, VULGAR FRACTION ONE HALF
(显示为“�”)然后,你的代码是正确的:
text = text.Replace("\xEF\xBF\xBD", "?");
或者您想要替换字节序列
EF BF BD
(实际上可能是unicode替换字符的utf-8表示,FFFD,通常显示为“ ”)?
这只是一个疯狂的猜测,但凭直觉说你实际上想要实现后者。现在,.Net字符串包含字符,而不是字节,但假设您已读取这些字节,例如从文件utf-8,答案是:
text = text.Replace("\xFFFD", "?");