Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ到SQL不存储unicode_C#_Unicode_Linq To Sql - Fatal编程技术网

C# LINQ到SQL不存储unicode

C# LINQ到SQL不存储unicode,c#,unicode,linq-to-sql,C#,Unicode,Linq To Sql,对于这个问题,我在互联网上已经有了一个很好的了解,我只是画了一个空白,因为所有建议都已经准备好了 我有以下代码: if (docid == 155) { docbody = "安全工作"; } var matchedContentBody = (from cb in dc.GetTable<tbl_content_body>() where cb.c_id == docid

对于这个问题,我在互联网上已经有了一个很好的了解,我只是画了一个空白,因为所有建议都已经准备好了

我有以下代码:

if (docid == 155)
{
    docbody = "安全工作";

}



var matchedContentBody = (from cb in dc.GetTable<tbl_content_body>()
                              where cb.c_id == docid

                          select cb).SingleOrDefault();

try
{
    matchedContentBody.contentBody = docbody;
    dc.SubmitChanges();
}
catch (Exception ex)
{
    throw ex;
}
if(docid==155)
{
docbody=”安全工作";
}
var matchedContentBody=(来自dc.GetTable()中的cb)
其中cb.c_id==docid
选择cb.SingleOrDefault();
尝试
{
matchedContentBody.contentBody=docbody;
dc.提交更改();
}
捕获(例外情况除外)
{
掷骰子;
}
字段contentBody是(并且一直是)nvarchar(max)。当我读回这些数据时,在一个带有字符集utf-8的网页上,我看到了

据我所知,Unicode字段类型不需要声明它是Unicode数据


对此的任何指导都将不胜感激。

对于任何有同样问题的人来说……我的解决方案是将字符串数据强制转换为Unicode。不要问我为什么,但它确实有效。在代码中运行LINQ update语句之前,我对字符串数据执行以下操作:

docbody = System.Text.UTF8Encoding.Default.GetString(System.Text.UTF8Encoding.UTF8.GetBytes(docbody));

您是否检查了dbml文件以确保类型为
nvarchar
?是的,如果我创建一个非常简单的经典ASP页面(utf-8字符集),dbml会说:[global::System.Data.Linq.Mapping.ColumnAttribute(Storage=“\u contentBody”,DbType=“nvarchar(max)”,UpdateCheck=UpdateCheck.Never)]使用原始sql和数据的文本区域,我可以将数据保存到数据库并正确显示。因此,我认为DB上的字段可以处理Unicode。我正在使用的应用程序是windows窗体应用程序(只是作为导入数据的桌面实用程序构建的)您是否为文本框设置了能够显示字符的字体?请尝试改用
RichTextBox
。这确实很难阅读。使用
System.text.Encoding.
访问基类的静态成员。这也将消除对UTF8的重复提及。因此,
Encoding.Default.GetString(Encoding.UTF8.GetBytes(docbody))
。现在,我们可以看到
编码的使用非常可疑。默认值
(我仍在讨论这个问题。)