有一個視頻文件名爲♥-You-Got-Me-♥[www.savevid.com].mp4
。但是,隨着具有此名稱的文件被插入到SQL Server 2005數據庫中,心變爲?
。當我將數據插入數據庫時,心變成問號。如何更改表格的字符集?
所以名字變成?-You-Got-Me-?[www.savevid.com].mp4
。
我不知道如何更改數據庫的字符集?如何更改我的表的字符集,以便它可以覆蓋所有字符?
這將是偉大的,如果隨着命令,圖形方法這樣做是包括在答案。
有一個視頻文件名爲♥-You-Got-Me-♥[www.savevid.com].mp4
。但是,隨着具有此名稱的文件被插入到SQL Server 2005數據庫中,心變爲?
。當我將數據插入數據庫時,心變成問號。如何更改表格的字符集?
所以名字變成?-You-Got-Me-?[www.savevid.com].mp4
。
我不知道如何更改數據庫的字符集?如何更改我的表的字符集,以便它可以覆蓋所有字符?
這將是偉大的,如果隨着命令,圖形方法這樣做是包括在答案。
你並不需要更改字符集的數據庫。只要你使用NVARCHAR類型,你應該在數據庫方面很好。但是,你必須確保無論你如何獲取數據到表中需要統一考慮:
DECLARE @VAR VARCHAR(100) = N'♥-You-Got-Me-♥[www.savevid.com].mp4'
, @NVAR NVARCHAR(100) = N'♥-You-Got-Me-♥[www.savevid.com].mp4'
, @oops NVARCHAR(100) = '♥-You-Got-Me-♥[www.savevid.com].mp4'
SELECT
@VAR
, @NVAR
, @oops;
返回:
?-You-Got-Me-?[www.savevid.com].mp4 ♥-You-Got-Me-♥[www.savevid.com].mp4 ?-You-Got-Me-?[www.savevid.com].mp4
的最後聲明中省略N箇中文字的前面。有類似的方法可以在你的前端搞砸了。即使DB存儲Unicode,也必須確保輸入和數據庫之間的所有內容,然後返回到用戶界面,才能正確處理多字節字符。
該問題很可能使用VARCHAR
,如果可能的話更改爲NVARCHAR
類型應解決新條目的問題。如果您無法更改列類型,則可能會變得更加複雜。
它不是一個charset問題,但在SQL Server中的數據類型的問題。 SQL Server沒有像MySQL這樣的CHARSET,並且Collations are for code page, sorting and comparing
您需要使用nvarchar
才能正確存儲unicode(基本上是非拉丁)數據。
我已更改爲nvarchar,但數據仍有問號而不是心臟 – saplingPro
@saplingPro:** how **你插入?如果你正在使用字符串文字 - 你是否在用'N'...''來標記它們爲Unicode? –
@marc_s謝謝!我錯過了'N' – saplingPro
將存儲文件名的字段的類型從varchar
更改爲nvarchar
。
例如:
表:
FilenameId INT IDENTITY 名NVARCHAR(200)
SQL插入數據:
INSERT INTO TestTable ([Filename]) VALUES(N'♥-You-Got-Me-♥[www.savevid.com].mp4')
您是將文件名存儲在「VARCHAR」類型還是「NVARCHAR」類型中? – bendataclear
@bendataclear'varchar' – saplingPro
使用'nvarchar'將允許您將char代碼存儲到您的**心**的內容 – GolfWolf