Python 遇到 ascii 中文 无法成功转化为 utf-8 的问题 | 简记

举报
墨理学AI 发表于 2022/01/10 23:34:04 2022/01/10
【摘要】 本文记录两种编码时遇到的错误,本文遇到报错场景和您的可能不一致,仅供参考 先陈述下本博文结论,您未必适用 推断是 因为 xshell 工具命令窗口 无法解析这些 ascii 类...

本文记录两种编码时遇到的错误,本文遇到报错场景和您的可能不一致,仅供参考


先陈述下本博文结论,您未必适用

  • 推断是 因为 xshell 工具命令窗口 无法解析这些 ascii 类型的中文(转 bytes 之后依旧无法解析),因此xshell 工具背锅

  • 开启正餐:阐述本文遇到此类报错的场景如下:

C 代码 使用 swig 转换 Python任务中,Python调用C 代码 中的一个车牌识别模型方法,C 方法返回识别信息(包含中文)给 Python 脚本; 这一步骤 遇到 如下报错

# 返回数据类型 char * 
951.000000,81.000000,1073.000000,129.000000,0.998091,京KU2558,蓝;


# print(chr(20140)) 代码测试 报错如下
python3  test.py 
Traceback (most recent call last):
  File "test.py", line 3, in <module>
    print(chr(20140))
UnicodeEncodeError: 'ascii' codec can't encode character '\u4eac' in position 0: ordinal not in range(128)


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

xshell 工具测试,具体报错如下:
可以发现Linux环境, 报错是说 window.py 文件 out_stream.write(msg) ,该报错可以理解为 输出流解析报错
结合以下测试,推断是 因为 xshell 工具无法解析这些 ascii 类型的中文(转 bytes 之后依旧无法解析)

bpython version 0.18 on top of Python 3.6.10 /home/rd5/anaconda3/envs/zhi-exp/bin/python
>>> chr(20140)
 
Traceback (most recent call last):

  File "/xx/python3.6/site-packages/curtsies/window.py", line 412, in render_to_terminal
    self.write(for_stdout(line))
  File "/xx/python3.6/site-packages/curtsies/window.py", line 43, in write
    self.out_stream.write(msg)
UnicodeEncodeError: 'ascii' codec can't encode character '\u4eac' in position 1: ordinal not in range(128)


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

验证代码如下

0-1
0-2

大家可以搜到蛮多 encode() 、decode() 编解码方法,可以进行尝试,目前 xshell 命令窗口下,暂时无法处理本文所述问题;

文章来源: positive.blog.csdn.net,作者:墨理学AI,版权归原作者所有,如需转载,请联系作者。

原文链接:positive.blog.csdn.net/article/details/115380565

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。