我的查询如下:
string str = string.Format("Insert into [MyDB].[dbo].[tlb1] ([file_path],[CONTENT1],[CONTENT2]) values ('{0}','{1}','{2}');", fullpath, _val[0], _val[1]);
现在当我将数据插入数据库时,如果array _val[]
包含英语数据,则会正确插入,但当数组包含数据库中的俄语数据时,此显示为???????????????????????
有没有办法从数组中插入俄语语言数据。
答案 0 :(得分:2)
根据此(已存档)Microsoft支持问题:
答案 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格式。