在 C# 中将拉丁语转换为英语编码

Convert Latin to English encoding in C#

我正在尝试将英文字符 ù 转换为 a

示例代码:

 Encoding latinEncoding = Encoding.GetEncoding("Windows-1252");
 Encoding ascii = Encoding.ASCII;
 byte[] latinBytes = ascii.GetBytes(txt);
 string asciiSring = latinEncoding.GetString(latinBytes);

我在 asciiSring 中得到的是 '?'而不是 'a'.

正确的做法是什么?

为什么用户在需要 'a' 时不插入 'a'?这似乎不是绝大多数应用程序应该关心的问题。它通常只存在于用户和 OS 之间。参见 "Text Services and Input Languages"。

尽管如此,应用程序可以通过分配 InputLanguage.CurrentInputLanguage to one of InputLanguage.InstalledInputLanguages 来动态设置键盘布局。我不确定这对用户是否可见,因此如果应用程序提供控件或指示器就不会那么混乱。