2010-04-27 57 views

回答

0

你可以嘗試從sql server讀取作爲varbinary(...)轉換的數據,然後在C#中創建自己的StreamReader,指定編碼。你需要知道數據是如何編碼的,因爲在.NET中有5種標準的Unicode編碼。

1

如果沒有轉換爲列的排序規則,則不能在varchar中存儲Unicode數據。那麼,如果將Unicode存儲在varchar列中,並且可能丟失,那麼Unicode將被編碼的完全不同。如果您看到?????,則表示編碼在存儲時找不到映射到ANSI值的字符,而是存儲問號。如果你想在數據庫中存儲Unicode,正確的解決方案是改變列的數據類型。如果您無法更改列的數據類型,請添加一列設置爲nvarchar並確保您的Unicode源讀取和寫入該列。

+0

您可能還需要繼續寫入varchar列,直到您可以將相關應用程序更改爲新列。一旦完成所有的轉換,然後刪除varchar列。 – HLGEM 2010-04-27 15:15:10

+0

@HLGEM - 一個有趣的問題是「寫什麼?」。如果值爲Unicode,則可能無法轉換爲給定列的排序規則。 – Thomas 2010-04-27 15:24:53

+0

你可能需要複製一些你可以和你現在的dat類似的東西。否則,其他應用程序會在轉換爲新列之前丟失所需的信息。這並不比目前的情況更糟糕,並且可能大部分記錄都是可讀的。如果這些數據有點奇怪,那麼只是讓遺留應用程序調整到使用新列的原因。 – HLGEM 2010-04-27 17:34:15

相關問題