我正在尝试将此值存储:ţşşţşţşţşîăâ。/,şllkoăîâ=在SQL Server中的一列中。
列是nvarchar(1000),insert语句看起来像
N'țșșțșțșțșîăâ./,șllkoăîâ='
但里面的数据仍然显示如下:??????????????????llkoaîâ€
关于我可以尝试的任何想法?
修改
我刚刚意识到我已经更改了数据库中的数据类型,但是linq2sql映射仍然使用varchar而不是nvarchar。
这就是造成这个问题的原因 - 我在尝试手动插入后才看到它。
感谢。
答案 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
....