DBF表中的编码问题

时间:2015-06-12 20:46:19

标签: foxpro dbf

我尝试从dbf表中获取数据,但在编码方面存在一些问题。 在表格中,除数字值外,还有两列包含字符串数据:名称和注释

它们都应该采用cyrilic编码,我两者都有问题。试图在Excel和DBF Commander中打开它们,但在每个编辑器中我都看到了:

名称值类似于 - (аа)_+_+__++ е_T з+_+T+++++

和评论一样 - гЃЊ”Џ—“‹Џ… ›Џ““… „ЏЌ 256 ‹— 490 Ё-178

经过一些调查后,我发现“注释”列中的值可以转换为具有以下代码的可读文本:

string value = "гЃЊ”Џ—“‹Џ… ›Џ““… „ЏЌ 256 ‹— 490 Ё-178";
var bytes_in = System.Text.Encoding.Default.GetBytes(value);
var bytes_out = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(866), System.Text.Encoding.GetEncoding(1251), bytes_in);
var DOS_WIN2 = System.Text.Encoding.GetEncoding(20866).GetString(bytes_out);
Console.WriteLine(DOS_WIN2);

但是我找不到Name列的任何解决方案。我也试过一堆自动编码转换器但没有成功。 看起来奇怪的是,值中有太多的“+”符号。在俄语中,没有经常使用的符号。

那么dbf表中的特定列是否可能以某种方式被破坏或加密?有没有办法从这个专栏中获取数据?

我发现“注释”列实际上是一个MIME类型,其中包含对带有真实字符串的.fpt文件的引用。所以Name是唯一的Character列,我无法读取它

2 个答案:

答案 0 :(得分:0)

将列定义为“Varchar NoCPTrans”,以便不对数据执行ANSI / OEM转换。它似乎对您的数据做了什么,因此无法识别它。另一种选择是将列定义为Varbinary,然后在数据库之外执行编码。

答案 1 :(得分:0)

尝试设置正确的编码标志(它看起来应该是 866俄语MS-DOS )。为此,您可以使用DBF Commander Pro:点击“工具 - >设置代码页',然后从列表中选择正确的。