将俄语数据从数组插入数据库

时间:2012-05-15 10:48:21

标签: c# sql-server-2005 encoding

我的查询如下:

string str = string.Format("Insert into [MyDB].[dbo].[tlb1] ([file_path],[CONTENT1],[CONTENT2]) values ('{0}','{1}','{2}');", fullpath, _val[0], _val[1]);

现在当我将数据插入数据库时​​,如果array _val[]包含英语数据,则会正确插入,但当数组包含数据库中的俄语数据时,此显示为??????????????????????? 有没有办法从数组中插入俄语语言数据。

4 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

首先,您应该使用预准备语句并让数据库驱动程序正确插入占位符(即SqlCommand带参数)。然后问题就会消失(以及任何潜在的SQL注入问题)。

作为您案例中的快速修复:使用N为您插入的字符串文字加上前缀:

... values (N'{0}',N'{1}',N'{2}')

这会导致文字为Unicode文字,而不是任意遗留代码页,从而阻止从Unicode转换为旧代码页(这会导致无法表示的字符出现问号)。

答案 2 :(得分:0)

[Content1][Content2]的数据类型似乎是nchar。您应该将列转换为nvarchar,用于存储unicode数据。

答案 3 :(得分:0)

首先,您必须在服务器上看到数据库代码页。可能是数据库中的非Unicode CP,但您的应用程序中的数据是Unicode格式。