首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从终端获取字符串并解码为gbk

如何从终端获取字符串并解码为gbk
EN

Stack Overflow用户
提问于 2020-04-10 12:24:55
回答 1查看 63关注 0票数 0

我需要从终端获取一个字符串。有时候,它是gbk,比如:

代码语言:javascript
复制
\77\262\331\327\367

我应该怎么做才能得到str的真正含义。如果它是以代码形式存在,则可以正确解码和打印。

代码语言:javascript
复制
inpt=b"\77\262\331\327\367"
print(inpt.decode("gbk"))

inpt=input("input: ")
print(inpt.decode("gbk"))

EN

回答 1

Stack Overflow用户

发布于 2020-06-03 03:35:45

input() function从输入中读取行,将其转换为字符串(去掉尾随的换行符),并返回该字符串。因此,'str' object has no attribute 'decode'消息是非常容易理解的。

您需要从该字符串构建一个bytes对象。下面是我的老式(非Pythonish)解决方案(脚本会产生一些说明性和说明性的输出):

代码语言:javascript
复制
inpt=b"\77\262\331\327\367"
print("\ninpt")
print(type(inpt),"\t",inpt )
print(type(inpt.decode("gbk")),"\t",inpt.decode("gbk"))

inps=r"\77\262\331\327\367" # instead of inps=input("input octals, \\ delimited: ")
print("\ninps")
print(type(inps),"\t",inps )

inpb=b''
for x in list(filter(None, inps.split("\\"))):
    inpb+=bytes.fromhex(hex(int(x,8)).replace('0x',''))

print("\ninpb")
print(type(inpb),"\t",inpb )
print(type(inpb.decode("gbk")),"\t",inpb.decode("gbk"))

输出:61134038.py

inpt b'?\xb2\xd9\xd7\xf7‘?操作inps \77\262\331\327\367 inpb b‘?\xb2\xd9\xd7\xf7?操作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61134038

复制
相关文章

相似问题

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