C#String.Replace和UTF-8字符

Dev*_*oot 2 c# string unicode utf-8

我试图用我自己的字符替换这个字符串中的一些罗马尼亚字符,但它并没有真正起作用.

static void Main(string[] args)
{
    string sometext = "Înc? nu s-a pornit acas?";
    sometext.Replace("?", "1");

    Console.WriteLine(sometext);
    Console.ReadKey(true);
}
Run Code Online (Sandbox Code Playgroud)

这将输出原始sometext而不做任何更改.但是,既不替换也不替换最终结果Inca nu s-a pornit acasa.变音符号被替换为与ISO-8859-1它们对应的字符.Î成为I,?成为a.

Sumarry:

预期的结果是:Înc1 nu s-a pornit acas1.

实际上,我得到: Inca nu s-a pornit acasa

注意:在Advanced Save Options,我选择了以下编码:Unicode (UTF-8 with signature) - Codepage 65001

实际上,字符串是不可变的,String.Replace返回一个字符串,所以sometext = sometext.Replace("?", "1");工作正常.谢谢大家!

Has*_*niH 7

替换不会改变字符串,它会返回带有替换的字符串,因此您的代码应该是:

sometext = sometext.Replace(...);
Run Code Online (Sandbox Code Playgroud)