UTF-8无法存储在SQL Server 2008的NVarChar中

| 我正在从网站上使用
System.Net.WebClient
提取数据,当数据返回时,除带有重音符号的字母外,所有内容都会解析并看起来不错。例如,当它返回“ 1”时,SQL Server 2008将其另存为“ 2”。 只需弄清楚如何将这些UTF-8字符转换为SQL Server可以读取的内容。我将其存储在
NVARCHAR(MAX)
数据类型中。 如果您感到好奇,我正在使用Linq-to-SQL插入数据库。 我有什么想法可以将其转换为正确的格式?     
已邀请:
弄清楚了!使用WebClient类时,我以字符串形式下载数据。 我的原始配置...
System.Net.WebClient wc = new WebClient();
string htmlData = wc.DownloadString(myUri);
我试图将数据从当前字符串转换为UTF-16 ...,但是由于Microsoft在UTF-16中运行,因此它自己处理了转换。 相反,我改变了从数据中读取实际的byte []数组的方法,就像这样...
System.Net.WebClient wc = new WebClient();
string htmlData = UTFConvert(wc.DownloadData(myUri));

private string UTFConvert(byte[] utfBytes)
{
    byte[] isoBytes = Encoding.Convert(Encoding.UTF8, Encoding.Unicode, utfBytes);
    return Encoding.Unicode.GetString(isoBytes);
}
这解决了问题,并且SQL现在可以正确地看到所有内容中的重点。 pp 祝一切顺利,并感谢您的帮助!     
在SQL Server中存储UTF-8数据的说明。在Microsoft SQL Server 2005的国际功能中也有关于此主题的讨论。其要旨是:SQL Server不支持UTF-8。随意修改请求以添加对在SQL Server中本地存储UTF-8的支持。 不过,请注意,由于您是通过LINQ存储Unicode字符串的,因此这表明在写入SQL Server之前会出现问题。即您的网页提取,是否正确转换了使用UTF-8阅读器读取的数据?也就是说,您是否通过由适当的ѭ8构成的ѭ7来阅读ѭ6?那应该创建正确的Unicode字符串,然后数据库中的NVARCHAR存储(UCS-2)应该可以。     

要回复问题请先登录注册