C#String.Format()返回错误字符
我发现string.Format的行为非常奇怪。我形成这样的信息:C#String.Format()返回错误字符,c#,.net,string,unicode,string-formatting,C#,.net,String,Unicode,String Formatting,我发现string.Format的行为非常奇怪。我形成这样的信息: protected override string GetMessageText(ManualEventFact reason) { var messageText = string.Format("Диспетчер закрыл событие {0}(\"{1}\")",reason.EventTemplate.DisplayName, reason.Text);
protected override string GetMessageText(ManualEventFact reason)
{
var messageText = string.Format("Диспетчер закрыл событие {0}(\"{1}\")",reason.EventTemplate.DisplayName, reason.Text);
return messageText;
}
开头的字母是俄语。但是,在调用方法时,我得到了这个字符串:。这看起来像是string.Format为硬编码字返回的非unicode字符。我如何处理这个问题?
另外,我在我的应用程序的另一部分中也遇到了这个问题。可能是源文件编码的问题。。。如果您使用的是Visual Studio,请打开cs文件,然后转到
文件
->将(您的cs)另存为
,然后在保存
按钮附近,单击小箭头,使用编码保存
,对于编码
选择Unicode(带签名的UTF-8)-代码页65001
,这很有效!非常感谢,但是有没有办法强制VS使用UTF编码保存所有cs文件?我不想浏览所有文件并检查它们是否正确保存…@AlexVoskresenskiy如果在Visual Studio中创建cs文件,默认情况下它应该是UTF-8。。。这显然排除了您使用另一个文本编辑器编写的文件,然后将其“包含”到项目中。如果你有一堆文件,你不确定它们的编码,我不认为在Visual Studio中有办法大规模更改它们的编码…@AlexVoskresenskiy有,但我非常清楚会发生什么。。。如果一个文件不是用UTF8/Unicode编码的,它的编码就不是“清晰的”或“隐式的”,所以转换可能会“丢失”数据。嗯,无论如何,这是最糟糕的尝试。再次感谢你的帮助@AlexVoskresenskiy首先备份你的sorce文件!:-)