如何通过iraninanSystem codePage将信息存储到dbf文件

时间:2014-03-03 09:29:16

标签: c# dbf

我通过以下代码绑定到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文件中时,对于大多数字符显示???? ??? ?????。

请指导我如何使数据库中存储的信息不会被损坏。

谢谢

1 个答案:

答案 0 :(得分:1)

您无法在Unicode文件中存储unicode文本,它只允许存储ANSI字符。因此,在插入DBF文件之前,应将iranian unicode文本转换为ANSI字符集。另外,不要忘记在结果DBF文件中设置1256阿拉伯语Windows charset标志。