字符串和UTF16

时间:2011-05-05 14:28:46

标签: c# encoding

存储在String对象中的数据是否始终使用UTF16编码?

我问这个是因为我的数据库确实存储了非Unicode的非英语。我认为数据不可读,因为它是以错误的编码方式读取的。

由于

5 个答案:

答案 0 :(得分:5)

内部.NET字符串是UTF-16,是的......但重要的是如何在.NET和数据库之间传输数据。

只要字符可以在Unicode中表示,并且驱动程序执行适当的转换,您应该没问题。如果您尝试表示无法用Unicode表示的文本,您可能会遇到一些有趣的行为。

答案 1 :(得分:0)

是的,.NET字符串总是以UTF-16编码 - 代理对除外,这意味着2字节字符。

答案 2 :(得分:0)

.NET字符串始终是Unicode。如果您的数据库是unicode,那么您就可以了,否则您需要将文本从其所处的格式转换为unicode。

答案 3 :(得分:0)

.NET中字符(以及字符串)的内部存储是以UTF-16完成的。

您需要将字符串重新编码为数据库使用的编码。

请参阅Encoding类 - 您可以使用此字符串将字符串从一种编码转换为另一种编码。

答案 4 :(得分:0)

如果您正在将ADO.NET与SqlDataCommands(或其他类型的DataCommands)一起使用,则应该为您处理任何所需的转换,您无需担心它。