Unicode字符未在子流程输出中正确显示

时间:2019-09-16 18:00:11

标签: python python-3.x linux subprocess

我正在为i3blocks编写一个python脚本,以在Spotify上显示当前的艺术家和歌曲,并使用subprocess.run()和playerctl来获取歌曲数据。输出无法正确显示日语字符,而是显示诸如\xe9\xa3\x9b\xe3\x81\xb9之类的文本。换行符也显示为\n,而不是实际的换行符。

我尝试使用string.decode(“ utf-8”),并收到错误'str' object has no attribute 'decode',在解码之前尝试了string.encode("utf-8")string.encode("ascii"),但是输出与没有string.decode()的情况相同。

output = str(subprocess.run(["playerctl", "metadata"], capture_output = True))
lines = output.split("\\n")
artist = lines[5].split("artist")[1].strip()
title = lines[8].split("title")[1].strip()
print(artist, title)

正确的输出应该是tricot 飛べ,但实际输出是tricot \xe9\xa3\x9b\xe3\x81\xb9

1 个答案:

答案 0 :(得分:0)

这项工作

t = b"tricot \xe9\xa3\x9b\xe3\x81\xb9"
t.decode("utf-8")

因为您的字符串必须是-执行解码方法的二进制字符串