首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用自定义编码编写dbf文件(DBF包)

用自定义编码编写dbf文件(DBF包)
EN

Stack Overflow用户
提问于 2022-07-11 05:54:11
回答 2查看 61关注 0票数 1

我在波斯语中有一些字符,我想用我的自定义代码页将它们写入dbf文件,即每个字符一个字节。我认为这问题可以用以下两种方法之一解决:

1-将我的自定义代码页传递给dbf表。

2-直接将二进制数据写入dbf文件,而不使用默认的dbf封装代码页(即utf8)。

我如何用这两种方法来解决这个问题?

以下是代码:

代码语言:javascript
复制
import dbf

man = 'مرد'
woman = 'زن'
row1 = (man, woman)
row2 = (man, woman)

with open('./file.dbf', 'w') as f:
    table = dbf.Table(filename='./file.dbf',
        field_specs='field1 C(3); field2 C(3)', codepage='customCodePage', on_disk=True)
    table.open(dbf.READ_WRITE)
    table.append(row1)
    table.append(row2)
    table.close()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-20 03:55:46

在尝试注册我的编解码器后,我最终将我的数据从utf8转换为“自定义波斯语编解码器”,然后转换为具有相同十进制编码点的windows-1256的等效字符。因此,当用户使用自定义编解码器读取数据时,windows-1256字符将指向自定义编解码器中的右小数点,当然这种原始格式中的字符没有意义。

例如,unicode中的字母پ的十进制编码点为1662,而自定义编解码器的编码点为148。相当于windows-1256中148个代码点的是“。因此,پ翻译为“使用3种不同的字典。我对波斯语键盘中的所有字符都这样做。

票数 1
EN

Stack Overflow用户

发布于 2022-07-16 01:39:30

dbf设计用于处理现有代码页,因此不考虑自定义代码页。

如果你是好斗的:

  • dbf.code_pages中添加一个具有短和长斜度的自定义数字(例如dbf.code_pages[0xa1] = ('farsi','single-byte farsi code page') )
  • codecs模块注册自定义代码页,以便codecs.getdecoder('farsi')codecs.getencoder('farsi') (或您选择使用的任何名称)返回适当的解码器/编码器
  • 测试,测试,测试(带备份副本)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72934244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档