C# 为ansi字符强制转换字符

C# 为ansi字符强制转换字符,c#,.net,casting,char,ansi,C#,.net,Casting,Char,Ansi,我正在将一个项目从VB6迁移到C# 在代码的一部分中,它获取ANSI中的int值(我想!),并将char值获取为字符串: StringBuilder s_e = new StringBuilder(); s_e.Append(Microsoft.VisualBasic.Strings.Chr(inNCr).ToString()); 试用 s_e.Append((char)inNCr); 但是只从a-z开始工作,而不适用于其他字符,因此结果并不总是正确的 我知道我可以使用Microsoft.V

我正在将一个项目从VB6迁移到C#

在代码的一部分中,它获取ANSI中的int值(我想!),并将char值获取为字符串:

StringBuilder s_e = new StringBuilder();
s_e.Append(Microsoft.VisualBasic.Strings.Chr(inNCr).ToString());
试用

s_e.Append((char)inNCr);
但是只从a-z开始工作,而不适用于其他字符,因此结果并不总是正确的

我知道我可以使用
Microsoft.VisualBasic,然后用它来完成,但是有没有办法用c#“本机”来完成呢

提前谢谢

[编辑]需要澄清

inNCr是字符的字符代码,它是一个int。然后,该int应该是一个char,并在应用程序上显示为字符串。 例如:
字符代码130应为''',但在应用程序上显示为空白,调试时显示为\u0082

使用
Convert.ToChar
。有关更多详细信息,请参见此处:

您可能正在查找
Convert.ToChar
。MSDN:有没有未正确转换的字符示例?另外,请注意,并非所有字符都可以打印。。除非您安装了正确的字体:VB6和.NET语言都不会将自己限制为“ANSI”字符。VB6使用了Windows NT的Unicode功能。在.NET中,字符处理更加灵活。您的代码不显示inNCr的类型,也不显示它是如何初始化的。你能展示足够的信息让我们看到你在做什么吗?
ANSI
编码不存在(机构存在)。在ASCII 127以上,您有本地编码或默认编码(>
CodePage 1252
,aka
iso-8859-1
(虽然在实践中编码不同),aka
Windows-1252
,aka
西欧(Windows)=>System.Text.sbcscodepagencoding
,aka
Encoding.default
)。因此,您可以编写:
var bytes=newbyte[]{130140};var uniChars=Encoding.GetEncoding(1252).GetChars(字节);[StringBuilder]。追加(uniChars)
或使用编码。默认预定义集:
var uniChars=Encoding.Default.GetChars(字节);[StringBuilder]。追加(uniChars)已尝试过,但我得到的是:140'\u008c',33'!',133'\u0085'。我能打印140和133吗?如果我做一个简单的Console.WriteLine,我会得到:“?!?”