Python 使用PyRFC接收原始数据类型列的问题

Python 使用PyRFC接收原始数据类型列的问题,python,python-2.6,sap-gui,pyrfc,Python,Python 2.6,Sap Gui,Pyrfc,在使用PyRFC从SAP提取数据时,我遇到了一个处理原始数据类型列的问题 下面是元数据的屏幕截图以及数据在SAP GUI中的外观 下面是我正在运行以获取本专栏的代码片段 with Connection(user=user, passwd=password, ashost=host, sysnr=sysnr, client=client) as connObj: dataObj = connObj.call(table) print dataObj for x in

在使用PyRFC从SAP提取数据时,我遇到了一个处理原始数据类型列的问题

下面是元数据的屏幕截图以及数据在SAP GUI中的外观

下面是我正在运行以获取本专栏的代码片段

with Connection(user=user, passwd=password, ashost=host, sysnr=sysnr, client=client) as connObj:
    dataObj = connObj.call(table)
    print dataObj

    for x in dataObj.get('PT_LIST'):
        print "type: ", type(x["PARENT"])
        print "parent: ", x["PARENT"]
对于
print dataObj
,我得到以下响应

{u'PT_LIST': [{u'PARENT': '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'}, {u'PARENT': '\xa06\x9f\xa8\\\xb4\x1e\xda\xac\x97\x18-\xf5\xb4\x1f\xe8'}]}

type:  <type 'str'>
parent:
type:  <type 'str'>
parent:  ▒6▒▒\▒ڬ▒-▒▒
{u'PT_LIST':[{u'PARENT':'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'},{u'PARENT':'\xa06\x9f\xa8\\\ xb4\x1e\xda\xac\x97\x18-\xf5\xb4\x1f\xe8'}]
类型:
起源:
类型:
起源:▒6.▒▒\▒ڬ▒-▒▒
当我尝试将其转换为str时,我得到以下错误

Traceback (most recent call last):
  File "<stdin>", line 18, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 0: ordinal not in range(128)
回溯(最近一次呼叫最后一次):
文件“”,第18行,在
UnicodeDecodeError:“ascii”编解码器无法解码位置0中的字节0xa0:序号不在范围内(128)
请有人帮助我理解如何正确地将这些数据转换为可读格式,与SAP GUI中显示的格式相同

感谢您的时间和回复


谢谢,

我修改了我的代码,如下所示,效果非常好。特别感谢@Sandra Rossi的建议

with Connection(user=user, passwd=password, ashost=host, sysnr=sysnr, client=client) as connObj:
    dataObj = connObj.call(table)
    for x in dataObj.get('PT_LIST'):
        print "parent: ", x["PARENT"].encode('hex')
输出:

parent:  00000000000000000000000000000000
parent:  a0369fa85cb41edaac97182df5b41fe8

encode('hex')
成功了。我一直在尝试utf-8和其他编码,而在这种情况下我应该使用十六进制。

“0位的字节0xa0”表示您成功地从SAP return检索到了第一个字节。“'ascii'…不在范围(128)”表示当前代码使用ascii US(ANSI)将字节转换为字符,ANSI不接受值为0x80(128)及以上的字节。但我想你只是想把字节转换成十六进制字符串。在web上搜索解决方案。对于Python2.6,这里有一个解决方案。@SandraRossi非常感谢您的见解。你的指导帮助我找到解决办法。我一直在尝试utf-8编码,但结果证明我需要使用十六进制编码。这对我有用