C# 如何在C中读取包含泰语措辞的DBF文件
我有一个dbf文件,在某些列中包含泰语。但当我把它转换成数据表时,它就变得不可读了C# 如何在C中读取包含泰语措辞的DBF文件,c#,dbf,C#,Dbf,我有一个dbf文件,在某些列中包含泰语。但当我把它转换成数据表时,它就变得不可读了 var oConn = new System.Data.Odbc.OdbcConnection(); oConn.ConnectionString = "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" + dbPath + ";"; oConn.Open();
var oConn = new System.Data.Odbc.OdbcConnection();
oConn.ConnectionString = "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" + dbPath + ";";
oConn.Open();
var oCmd = oConn.CreateCommand();
oCmd.CommandText = "SELECT badgename FROM " + dbPath + @"\BADGE.DBF";
var reader = oCmd.ExecuteReader();
reader.Read();
byte[] A = Encoding.GetEncoding(Encoding.Default.CodePage).GetBytes(reader.GetString(0));
string p = Encoding.Unicode.GetString((Encoding.Convert(Encoding.GetEncoding(874), Encoding.Unicode, A)));
我还尝试将机器语言环境更改为泰语,但仍然无法解决我的问题。
请提供帮助。您需要的关键字是:Unicode。试试这个代码
var oConn = new System.Data.Odbc.OdbcConnection();
oConn.ConnectionString = "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" + dbPath;
oConn.Open();
var oCmd = oConn.CreateCommand();
oCmd.CommandText = @"SELECT name FROM " + dbPath + "TABLE.DBF";
var reader = oCmd.ExecuteReader();
reader.Read();
byte[] A = Encoding.GetEncoding(Encoding.Default.CodePage).GetBytes(reader.GetString(0));
string p = Encoding.Unicode.GetString((Encoding.Convert(Encoding.GetEncoding(850), Encoding.Unicode, A)));
尝试向连接字符串中添加以下参数:
CODEPAGE=874;
其中874是泰国Windows编码的代码页
如果这不起作用,请尝试Barry Guvenkaya使用874代码页而不是850将其转换为Unicode。我仍然使用OLEDB连接,但随后逐行转换列,但仍然无法转换为正确的值。您尝试过FoxPro驱动程序吗?您的意思是正确的吗?刚刚尝试了ODBC,但仍然遇到相同的问题。请通过添加您尝试过的内容来编辑您的实际问题。我可以转换,但与原始单词仍有一点不同,我将在句子中得到几个“?”。