我通过以下代码绑定到Dbf文件并存储我的信息
public int save_dbf_func(string source_dbf, string str_command)
{
try
{
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + source_dbf + ";Extended Properties=dBASE IV;User ID=;Password=;"); // give your path directly
OleDbCommand Cmd = new OleDbCommand();
if (con.State == ConnectionState.Closed) con.Open();
Cmd.CommandText = str_command;
Cmd.Connection = con;
int RowEffect = Cmd.ExecuteNonQuery();
con.Close();
return RowEffect;
}
catch (Exception ex)
{
var mm = ex.ToString();
return -1;
}
}
例如:
save_dbf_func("c:\folder", "insert into file.dbf (fName , lName) values ('مرتضی' , 'زند')")
通过dll将我的字符串转换为伊朗系统codePage,例如:
CONVERTLib.ConvertorClass convert_dll = new CONVERTLib.ConvertorClass();
textBox1.Text = convert_dll.WinToIran('مرتضی');
将转换后的字符串转换为文本框是正确的,但是当我将字符串存储在Dbf文件中时,对于大多数字符显示???? ??? ?????。
请指导我如何使数据库中存储的信息不会被损坏。
谢谢
答案 0 :(得分:1)
您无法在Unicode文件中存储unicode文本,它只允许存储ANSI字符。因此,在插入DBF文件之前,应将iranian unicode文本转换为ANSI字符集。另外,不要忘记在结果DBF文件中设置1256阿拉伯语Windows charset标志。