Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中读取包含泰语措辞的DBF文件_C#_Dbf - Fatal编程技术网

C# 如何在C中读取包含泰语措辞的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();

我有一个dbf文件,在某些列中包含泰语。但当我把它转换成数据表时,它就变得不可读了

 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,但仍然遇到相同的问题。请通过添加您尝试过的内容来编辑您的实际问题。我可以转换,但与原始单词仍有一点不同,我将在句子中得到几个“?”。