Unicode到ANSI

时间:2017-03-29 20:27:45

标签: c# string encoding

如何将unicode转换为ANSI?

示例我有以下unicode用户名:

очередной 

我称之为导入方法:

[DllImport("kernel32.dll", EntryPoint = "GetTempPathA")]
public static extern uint GetTempPath(uint nBufferLength, [Out()]
System.Text.StringBuilder lpBuffer);

我收到以下结果:

C:\Users\A690~1\AppData\Local\Temp\

现在我尝试了多种编码方式:

Encoding.ASCII.GetString(Encoding.Unicode.GetBytes(Environment.UserName));
Encoding.GetEncoding(1250).GetString(Encoding.Unicode.GetBytes(Environment.UserName));
Encoding.GetEncoding(1251).GetString(Encoding.Unicode.GetBytes(Environment.UserName));

但是没有一个给我与导入方法相同的结果。如何正确地将unicode字符串转换为ANSI,以便它给我与导入方法相同的结果?

1 个答案:

答案 0 :(得分:0)

您应该使用GetTempPathW方法而不是GetTempPathA方法。 W使它成为Unicode,这是Unicode字符所需的。

尝试将Unicode转换为ASCII(当您想使用非ASCII范围的字符时这是不可能的)将无法解决问题。