使用HTML导入非标准字符的奇数字符?

时间:2010-10-29 20:23:38

标签: c# sql-server

我们正在尝试读取包含某些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.该数据列的数据类型是二进制的。请告诉我我可以提供的代码或详细信息。感谢。

2 个答案:

答案 0 :(得分:1)

将任意字节转换为某个任意代码页显示为时髦字符。这里没有什么新东西,总是如此,而且永远都是如此。您需要正确管理文本结束端到端,从正在读取的文件到显示的最终数据。首先阅读:International Features in Microsoft SQL Server 2005。这个旧的KB也很有用(至少在某种程度上)Description of storing UTF-8 data in SQL Server。一旦你弄清楚你的HTML文件是什么编码以及你要显示数据的编码,我们就可以讨论可用的选项。

哦,我忘记了强制性链接:The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

答案 1 :(得分:0)

作为一个临时解决方案,如果我没有错,那么角色就像一个正方形,不是?显示后,您可以随时替换恼人的字符。

您查找ASCII代码(要知道它,您只需要convert.int32)并将其替换为您喜欢的字符。