如何读取 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)));
我还尝试将机器区域设置更改为泰语,但仍然无法解决我的问题。请帮忙。
你需要的关键字是: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。