c#不翻译unicode字符串
本文关键字:字符串 unicode 翻译 | 更新日期: 2023-09-27 18:17:08
我有一个字符串,我想插入到一个表中:
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
和显示||为中文字符。
管道实际上就是那些小矩形。
当它插入表格时它插入的是矩形字符而不是我设置的字符
有人有什么建议吗?谢谢!
我在别人的机器上运行了完全相同的代码,它在那里工作如预期,没有任何更改。这似乎是我的系统上的显示问题。唯一不寻常的事情是我去度假了,把我的机器关掉了10天。我知道这可能无关紧要,但它似乎对我的系统做了一些与字体相关的事情。我不在的时候没有人碰我的电脑,我离开之前也没有做任何与字体相关的事情。
但是有一个转折,记事本不会显示中文字符,也不会VS调试器,而不是SQL SSMS网格结果视图。但是VS . cs文件字符串var defwill和如果我粘贴到SSMS编辑器中,它也会显示它们。
疯狂!
好吧,我不确定你到底在做什么,但是你最好使用参数化查询。所以可能像这样(这是伪代码,需要修改才能编译):
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();
}
}