在我的程序中,我正在读取HTML文件中的数据,但在这个文件中,有时会有一些包含unicode字符的文本数据被转换回UTF-8:
Michèle - > Michèle
我正在使用以下代码从文件中检索数据:
string ConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"HTML import;CharacterSet=UNICODE;HDR=NO;IMEX=1;MaxScanRows=0;TypeGuessRows=0\";", fileName);
using (OleDbConnection cn = new OleDbConnection(ConnectionString))
{
cn.Open();
using (OleDbCommand cm = cn.CreateCommand())
{
string pageName = "bestelformulier";
cm.CommandText = string.Format("Select * from [{0}]", pageName);
cm.CommandType = CommandType.Text;
var da = new OleDbDataAdapter(cm);
var ds = new DataSet();
da.Fill(ds);
var dt = ds.Tables[0];
ProcessRows(dt);
}
}
我搜索谷歌试图找出如何'告诉'OleDb在阅读文件时使用Unicode但我还没有找到解决方案(使用扩展属性CharacterSet = UNICODE似乎不起作用)。这里的任何人都可以帮助我吗?
感谢, Jurjen。
20-mrt-2012,15.41
我还没有找到解决方案,但我创建了一个小函数te将字符串恢复到原始状态,这就是我在读取数据后现在对所有字符串字段使用的内容。
private static Encoding iso = Encoding.GetEncoding("ISO-8859-1");
public static string RepairUTF8(this string value)
{
byte[] bytes = iso.GetBytes(value);
if (bytes.Any(o => o.Equals(195)))
{
return Encoding.UTF8.GetString(bytes);
}
return value;
}