C# wstring转string,string转wstring
时间: 2024-07-01 21:00:31 浏览: 151
在C#中,`System.String`和`System.Text.WideString`分别表示普通字符串(ASCII字符)和宽字符字符串(Unicode字符)。它们之间的转换需要注意,因为数据类型不同。
1. `wstring`转`string`:
- 使用`System.Text.Encoding.UTF8.GetString()`方法:如果宽字符字符串中包含的是UTF-8编码的ASCII字符,可以直接转换。例如:
```csharp
string utf8String = Encoding.UTF8.GetString(wstring.AsBuffer());
```
- 如果宽字符字符串中包含非ASCII字符,你需要先将其转换为UTF-8或其他合适的编码格式再进行转换。
2. `string`转`wstring`:
- 使用`System.Text.UnicodeEncoding.GetBytes()`方法:将普通字符串转换为字节数组,然后使用`System.Runtime.InteropServices.Marshal.Copy()`方法复制到`wchar`数组中,最后创建`WideString`对象。例如:
```csharp
byte[] utf16Bytes = Encoding.Unicode.GetBytes(stringToConvert);
wchar[] utf16Chars = new wchar[utf16Bytes.Length / 2];
Marshal.Copy(utf16Bytes, utf16Chars, 0, utf16Chars.Length);
wstring wideString = new wstring(utf16Chars);
```
阅读全文