我在波斯语中有一些字符,我想用我的自定义代码页将它们写入dbf文件,即每个字符一个字节。我认为这问题可以用以下两种方法之一解决:
1-将我的自定义代码页传递给dbf表。
2-直接将二进制数据写入dbf文件,而不使用默认的dbf封装代码页(即utf8)。
我如何用这两种方法来解决这个问题?
以下是代码:
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()发布于 2022-07-20 03:55:46
在尝试注册我的编解码器后,我最终将我的数据从utf8转换为“自定义波斯语编解码器”,然后转换为具有相同十进制编码点的windows-1256的等效字符。因此,当用户使用自定义编解码器读取数据时,windows-1256字符将指向自定义编解码器中的右小数点,当然这种原始格式中的字符没有意义。
例如,unicode中的字母پ的十进制编码点为1662,而自定义编解码器的编码点为148。相当于windows-1256中148个代码点的是“。因此,پ翻译为“使用3种不同的字典。我对波斯语键盘中的所有字符都这样做。
发布于 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') (或您选择使用的任何名称)返回适当的解码器/编码器https://stackoverflow.com/questions/72934244
复制相似问题