我有兩個varchar
列first_name
和last_name
表。SQL Server 2005:將varchar轉換爲nvarchar問題
現在我需要將這些列轉換爲nvarchar
以支持UTF-8。
我在這些列的SSMS中選擇nvarchar
數據類型,當我嘗試輸入一些UTF-8數據時,我的符號轉換爲問號。例如,如果我輸入йцукен
(烏克蘭語),它將被轉換爲??????
。
什麼問題以及如何解決?
謝謝。
我有兩個varchar
列first_name
和last_name
表。SQL Server 2005:將varchar轉換爲nvarchar問題
現在我需要將這些列轉換爲nvarchar
以支持UTF-8。
我在這些列的SSMS中選擇nvarchar
數據類型,當我嘗試輸入一些UTF-8數據時,我的符號轉換爲問號。例如,如果我輸入йцукен
(烏克蘭語),它將被轉換爲??????
。
什麼問題以及如何解決?
謝謝。
當您要將nvarchar
文字插入到數據庫表中時,您必須使用N'..'
前綴。
所以使用
INSERT INTO dbo.YourTable(First_Name)
VALUES(N'йцукен')
使這個字符串將作爲的unicode字符串對待
如果你不使用N'..'
符號,你真的插入非Unicode字符串文字 - 這將導致這些轉換爲?
每一個小幫助。這是我們每天都會忘記的事情... +1 – Kaf 2013-02-20 16:46:08
不幸的是,它不適用於我的情況。即使當我嘗試用'N'字符更新表格時,它也會顯示問號。例如,UPDATE mytable SET first_name =N'йцукен' WHERE id = '10'將像以前一樣保存問號。儘管如此,當我用nvarchar列創建新表時,一切正常。 – user1048261 2013-02-21 09:25:33
你看過http://stackoverflow.com/q/761036/806549 ? – 2013-02-20 16:22:15
SQL Server nvarchar是UTF-16。看到http://support.microsoft.com/kb/232580 – muhmud 2013-02-20 16:26:09