2011-01-22 81 views
2

我试图将此值存储在SQL Server的一个列中:şşışışış。SQL Server 2005-字符编码问题

列数据类型为nvarchar(1000)和所述插入语句看起来像

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

但是内部的数据仍然显示像向上:????????? IAA ./ ,?llkoaîâ=

任何想法,我可以尝试吗?

编辑

我才意识到,我已经在数据库中更改的数据类型,但LINQ2SQL映射保持与VARCHAR而不是NVARCHAR。

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

谢谢。

回答

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

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

现在,右键单击表对象资源管理器,“编辑前200行”或“SE LECT TOP 1000 rows“在我的SSMS 2008中给出了正确的结果

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

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

所以,这表明SSMS和SQL行为完全按照广告:请告诉我们确切的代码(或方法)您使用插入数据

0

你是如何将这个添加到你的表?在Mgmt Studio?你用什么陈述?

如果你有NVARCHAR列,你必须使用N'...'语法与领先N前缀这个工作:如果省略N前缀

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

,管理Studio将其转换为无统一VARCHAR暂时....