有一个视频文件名为♥-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