2011-05-05 79 views
1

存儲在String對象中的數據是否始終使用UTF16編碼?字符串和UTF16

我在問這是因爲我的數據庫確實在非Unicode中存儲非英文。並且我認爲數據不可讀,因爲它是以錯誤的編碼讀取的。

由於

+0

你的數據庫使用什麼編碼? – Justin 2011-05-05 14:30:21

回答

5

內部.NET字符串是UTF-16,是的......但重要的是數據如何在.NET和數據庫之間傳輸。

只要字符可以代表代表 Unicode,並且驅動程序執行適當的轉換,您應該沒問題。如果您試圖表示無法用Unicode表示的文本,您可能會遇到一些有趣的行爲。

+0

這就是我期待的答案:) – Costa 2011-05-05 14:33:45

0

是,.NET字符串UTF-16總是編碼 - 與代理對,這意味着2個字節字符的除外。

0

.NET字符串總是Unicode。如果你的數據庫是unicode,那麼你很好,否則你需要將文本從它所在的格式轉換爲unicode。

0

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

您需要將字符串重新編碼爲數據庫使用的編碼。

請參閱Encoding類 - 這是您可以用來將字符串從一種編碼轉換爲另一種編碼。

0

如果您使用ADO.NET和SqlDataCommands(或其他類型的DataCommands),則應該爲您處理任何所需的轉換,並且您不需要擔心它。