python3 dbf 模块。 appen 西里尔字母的问题
python3 dbf module. trounle with appen cyrillic latters
尝试制作 dbf,一切正常,但如果我尝试附加西里尔字母:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-6: ordinal not in range(128)
我知道 python 有 unicode 问题,但我可能无法在 dbf 中放入西里尔字母后者?
代码:
table = dbf.Table(ex_file_name)
table.open(mode=dbf.READ_WRITE)
for r in rows_massive:
table.append(
(datetime.strptime(r[0], '%d.%m.%Y'), r[1], r[2], PLACEPAY, prefix_name))
PLACEPAY 支付在 0-6 位有西里尔字母后缀
问题是 dbf 不是用 code-page 创建的,所以它默认为 ASCII。您可以尝试使用代码页 866(俄语)创建 table。如果使用 dbf
1 模块创建,它看起来像这样:
table = dbf.Table('filename.dbf', 'field1 D, field2 C(10), ...,' codepage='cp866')
如果您不能自己创建 dbf,但是您使用的任何其他软件都损坏到足以读取 ASCII-specified dbf 文件中的 non-ASCII 数据,那么您可以在任何时候简单地覆盖代码页你在Python中打开table(和上面一样,但是没有字段说明):
table = dbf.Table('filename.dbf', codepage='cp866')
或者,如果您只使用 Python,并且只使用 dbf
模块,您可以尝试 'utf8'
的未记录和 incompatible-with-other-dbf-libraries 代码页 - - 如果你这样做,你会想让你的字符字段更大,因为表示某些 Unicode code-points 所需的字节数大于一个(最坏的情况是每个 code-point 四个字节,所以安全路线是将字符字段的大小增加四倍;即 C(6)
字段将是 C(24)
).
1 披露:我是 dbf
模块的作者。
尝试制作 dbf,一切正常,但如果我尝试附加西里尔字母:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-6: ordinal not in range(128)
我知道 python 有 unicode 问题,但我可能无法在 dbf 中放入西里尔字母后者?
代码:
table = dbf.Table(ex_file_name)
table.open(mode=dbf.READ_WRITE)
for r in rows_massive:
table.append(
(datetime.strptime(r[0], '%d.%m.%Y'), r[1], r[2], PLACEPAY, prefix_name))
PLACEPAY 支付在 0-6 位有西里尔字母后缀
问题是 dbf 不是用 code-page 创建的,所以它默认为 ASCII。您可以尝试使用代码页 866(俄语)创建 table。如果使用 dbf
1 模块创建,它看起来像这样:
table = dbf.Table('filename.dbf', 'field1 D, field2 C(10), ...,' codepage='cp866')
如果您不能自己创建 dbf,但是您使用的任何其他软件都损坏到足以读取 ASCII-specified dbf 文件中的 non-ASCII 数据,那么您可以在任何时候简单地覆盖代码页你在Python中打开table(和上面一样,但是没有字段说明):
table = dbf.Table('filename.dbf', codepage='cp866')
或者,如果您只使用 Python,并且只使用 dbf
模块,您可以尝试 'utf8'
的未记录和 incompatible-with-other-dbf-libraries 代码页 - - 如果你这样做,你会想让你的字符字段更大,因为表示某些 Unicode code-points 所需的字节数大于一个(最坏的情况是每个 code-point 四个字节,所以安全路线是将字符字段的大小增加四倍;即 C(6)
字段将是 C(24)
).
1 披露:我是 dbf
模块的作者。