如何将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,以便它给我与导入方法相同的结果?
答案 0 :(得分:0)
您应该使用GetTempPathW
方法而不是GetTempPathA
方法。 W
使它成为Unicode,这是Unicode字符所需的。
尝试将Unicode转换为ASCII(当您想使用非ASCII范围的字符时这是不可能的)将无法解决问题。