我正在使用dulwich(一个Python库)来访问git存储库。当我使用get_object
检索提交时,它有许多属性。其中之一是author
。当我检索此属性时,我得到bytes
,因此该属性是一个未知的编码。
我可以安全地假设编码吗? git在存储之前是否将所有元数据转换为utf-8?如果没有,我怎么知道用哪个编码来解码字节?
答案 0 :(得分:2)
元数据应该使用i18n.commitEncoding
config value设置的值进行编码;无论何时创建提交,当前值都会被复制到对象的'encoding'标题中(如果已设置);默认值为UTF-8。
该编码值在Dulwitch对象上可用作'.encoding'属性;如果是None
,则i18n.commitEncoding
未明确设置,您可以使用UTF-8作为默认值。
然而!存储的实际数据简单地遵循传递给git的任何字节,并且不进行重新编码。配置值纯粹是信息性的。因此,如果您要使用object.encoding or 'utf8'
作为编解码器,则需要考虑使用了错误的编解码器,使用合理的错误处理程序或回退策略。