c#没有翻译unicode字符串

时间:2013-06-04 19:20:59

标签: c# translation unicode-string

我想将这个字符串插入表中:

 string command = @" insert into " + txnDC.Connection.Database + "..[AZGetPackages] ( [PackageID] , [PackageName] , [VendorID] , [VendorDisplayName] , [IsCustom] , [EPCustomerID] )" +
                    @"values( N'1', N'Package 1', N'11', N'Vendor 1', N'0', N''),
                    ( N'2', N'Package 2', N'12', N'Vendor 2', N'0', N''),
                    ( N'3', N'Package 3', N'13', N'Vendor 3', N'0', N''),
                    ( N'4', N'雑誌コード', N'14', N'税込', N'0', N'')";

当我在该行之后放置一个断点并且我在调试中查看该字符串时它会显示如下:

 txnDC.ExecuteCommand(command, new object[0]); << breakpoint here to view command var

并显示||对于中国人来说。

管道实际上是那些小矩形。

所以当它插入到表中时,它会插入矩形字符而不是我设置的实际字符。

这里有人有任何建议吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

我在别人的机器上运行完全相同的代码,它按预期工作,没有任何更改。这似乎是我系统上的显示问题。发生的唯一不寻常的事情就是我去度假并离开我的机器10天。我知道这可能是无关紧要的,但它似乎已经对我的系统做了一些与字体相关的事情。我不在的时候没有人碰过我的机器,在我离开之前我没有做任何字体相关的事情。

但是有一个扭曲,记事本不会显示中文字符,VS调试器也不会显示,而不是SQL SSMS网格结果视图。但VS .CS文件字符串var def将会如果我粘贴到SSMS编辑器中它也会显示它们。

疯狂!

答案 1 :(得分:0)

好的,我不确定你在做什么,但你最好还是使用参数化查询。也许这样的事情(这是伪代码所以需要修改才能编译):

using (SqlConnection c = new SqlConnection("..."))
{
    c.Open();
    using (SqlCommand cmd = new SqlCommand("INSERT INTO table (...) VALUES (@field1, ...)", c);
    {
        cmd.Parameters.AddWithValue("@field1", "税込");
        cmd.Parameters[0].SqlDbType = SqlDbType.NVarChar;

        cmd.ExecuteNonQuery();
    }
}