首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解码Ebcdic

解码Ebcdic
EN

Stack Overflow用户
提问于 2016-01-31 08:40:12
回答 2查看 9K关注 0票数 5

我被传送的数据是ebcdic编码的。类似于:

代码语言:javascript
复制
s = u'@@@@@@@@@@@@@@@@@@@ÂÖÉâÅ@ÉÄ'

尝试.decode('cp500')是错误的,但是正确的方法是什么?如果我将字符串复制到类似于Notepad++的东西中,我可以将它从EBCDIC转换为ascii,但我似乎无法在python中找到一种可行的方法来实现同样的目的。至于它的价值,正确的结果是:BOISE ID (加或减空格填充)。

这些信息是从JSON对象的一行文件中检索的。该文件如下所示:

代码语言:javascript
复制
{ "command": "flush-text", "text": "@@@@@O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O" }
{ "command": "flush-text", "text": "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\u00C9\u00C4@\u00D5\u00A4\u0094\u0082\u0085\u0099z@@@@@@@@@@\u00D9\u00F5\u00F9\u00F7\u00F6\u00F8\u00F7\u00F2\u00F4" }
{ "command": "flush-text", "text": "@@@@@OmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmO" }
{ "command": "flush-text", "text": "@@@@@O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O" }

处理循环看起来类似于:

代码语言:javascript
复制
with open('myfile.txt', 'rb') as fh:
  for line in fh:
    data = json.loads(line)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-31 09:16:34

如果Notepad++将其转换为ok,则只需:

Python2.7:

代码语言:javascript
复制
with io.open('myfile.txt', 'r', encoding="cp500") as fh:
  for line in fh:
    data = json.loads(line)

Python3.x:

代码语言:javascript
复制
with open('myfile.txt', 'r', encoding="cp500") as fh:
  for line in fh:
    data = json.loads(line)

这使用一个TextWrapper来解码文件,因为它是用给定的解码来读取的。io模块为Python2.x提供了Python3 open,并提供了编解码器/TextWrapper和通用换行符支持

票数 4
EN

Stack Overflow用户

发布于 2016-01-31 09:14:07

我的猜测是,您需要相应的Unicode序号的值作为字节,然后用cp500解码。

代码语言:javascript
复制
>>> s = u'@@@@@@@@@@@@@@@@@@@ÂÖÉâÅ@ÉÄ'
>>> bytearray(ord(c) for c in s).decode('cp500')
u'                   BOISE ID'

另一种选择是:

代码语言:javascript
复制
>>> s.encode('latin-1').decode('cp500')
u'                   BOISE ID'
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35111900

复制
相关文章

相似问题

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