我们正在尝试读取包含某些MS Word字符(例如长连字符)的HTML文件。例如,问题是这些字符在SQL 2008中显示为垃圾。数据列是varbinary,我通过转换为varchar来查看此数据。这是代码,逐字:
编辑:更正了不良字符的定义
var file = new FileInfo(/*file info*/);
using (var fs = file.OpenRead())
{
var buffer = new byte[16 * 1024];
using (var ms = new MemoryStream())
{
int read;
while ((read = fs.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
item.Data = ms.ToArray();
}
}
“item”对象超出了代码的范围。
如果它有任何不同,我们使用EF 4.该数据列的数据类型是二进制的。请告诉我我可以提供的代码或详细信息。感谢。
答案 0 :(得分:1)
将任意字节转换为某个任意代码页显示为时髦字符。这里没有什么新东西,总是如此,而且永远都是如此。您需要正确管理文本结束端到端,从正在读取的文件到显示的最终数据。首先阅读:International Features in Microsoft SQL Server 2005。这个旧的KB也很有用(至少在某种程度上)Description of storing UTF-8 data in SQL Server。一旦你弄清楚你的HTML文件是什么编码以及你要显示数据的编码,我们就可以讨论可用的选项。
答案 1 :(得分:0)
作为一个临时解决方案,如果我没有错,那么角色就像一个正方形,不是?显示后,您可以随时替换恼人的字符。
您查找ASCII代码(要知道它,您只需要convert.int32)并将其替换为您喜欢的字符。