SQL Server 2005 - 字符编码问题

时间:2011-01-22 12:03:49

标签: sql-server-2005 encoding

我正在尝试将此值存储:ţşşţşţşţşîăâ。/,şllkoăîâ=在SQL Server中的一列中。

列是nvarchar(1000),insert语句看起来像

N'țșșțșțșțșîăâ./,șllkoăîâ=' 

但里面的数据仍然显示如下:??????????????????llkoaîâ€

关于我可以尝试的任何想法?

修改

我刚刚意识到我已经更改了数据库中的数据类型,但是linq2sql映射仍然使用varchar而不是nvarchar。

这就是造成这个问题的原因 - 我在尝试手动插入后才看到它。

感谢。

2 个答案:

答案 0 :(得分:4)

CREATE TABLE Test (test nvarchar(1000))
INSERT Test (test) VALUES (N'țșșțșțșțșîăâ./,șllkoăîâ=')

-- SSMS query pane = correct results
SELECT * FROM Test

现在,右键单击对象资源管理器中的表,“编辑前200行”或“SELECT TOP 1000 rows”为我提供SSMS 2008中的正确结果

接下来,没有N前缀。根据您的问题打破数据

INSERT Test (test) VALUES ('țșșțșțșțșîăâ./,șllkoăîâ=')
SELECT * FROM Test
--gives ?????????îaâ./,?llkoaîâ=

因此,这表明SSMS和SQL的行为与宣传的完全相同:请向我们展示您用于插入数据的确切代码(或方法)

答案 1 :(得分:0)

你如何将它添加到你的桌子?在Mgmt Studio ???你用什么声明??

如果您有NVARCHAR列,则必须使用带有N'...'前缀的N语法才能生效:

INSERT INTO dbo.YourTable(someColumn)
 VALUES(N'țșșțșțșțșîăâ')

如果省略N前缀,Mgmt Studio会暂时将其转换为非Unicode VARCHAR ....