2010-02-11 51 views
0

我在SQL Server中含有需要包含Unicode數據的列的數據庫(它包含了來自世界各地如القاهرة開羅用戶的地址)如何恢復顯示在SQL Server中的Unicode數據?

此列是數據庫默認的排序規則的nvarchar列(Latin1_General_CI_AS),但我注意到通過包含非英文字符的SQL語句插入到其中的數據,並顯示爲?????。

解決方案似乎是,我沒有使用n前綴,例如

INSERT INTO table (address) VALUES ('القاهرة') 

相反的:

INSERT INTO table (address) VALUES (n'القاهرة') 

我的印象是,統一將自動轉換爲nvarchar列,我並不需要這個前綴下,但是這似乎是不正確的。

問題是我仍然有一些數據在這個列中顯示爲?????在SQL Server Management Studio中,我不知道它是什麼!

數據是否仍然存在,但字符編碼不正確,無法顯示,但仍然可挽救(如果有的話,我該如何恢復它?),還是消失了?

感謝,

湯姆

回答

1

要找出SQL服務器真的店,使用

SELECT CONVERT(VARBINARY(MAX), 'some text') 

我只是umlauted字符和阿拉伯數字想這(從維基百科複製的,我不知道),均爲普通字符串和N」 'Unicode字符串。

結果是,在轉換爲VARCHAR的過程中,阿拉伯語非Unicode字符串確實最終成爲問號(0x3F)。

1

SSMS有時不會顯示所有字符,我只是想你有什麼,它的工作對我來說,複製並粘貼到Word中,它可能corectly顯示它

通常如果SSMS不能顯示它應該是盒子不是?

+0

單詞顯示與SSMS完全相同:「??????」。在我正確插入unicode數據的其他表中,我確實看到了阿拉伯字符。 – Loftx 2010-02-11 17:33:43

+1

然後,你可能運氣不好 – SQLMenace 2010-02-11 17:37:16

+0

我不得不+1,1 SQLMenace的評論..因爲這是我認爲是不幸的答案是Loftx的問題... – Sung 2010-02-11 17:58:22

0

嘗試編寫一個小型客戶端,將這些數據檢索到文件或網頁。如果沒有其他插入或更新可能會將數據存儲到表中之前將其轉換爲varchar,請檢查所有代碼。

相關問題