如何读取 C# 中包含泰语措辞的 DBF 文件

本文关键字:泰语 文件 DBF 包含 何读取 读取 | 更新日期: 2023-09-27 18:34:22

我有一个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)));

我还尝试将机器区域设置更改为泰语,但仍然无法解决我的问题。请帮忙。

如何读取 C# 中包含泰语措辞的 DBF 文件

你需要的关键字是: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。