Error:SyntaxError: Non-ASCII character ‘\xe5‘ in file

679 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

目录

  • 问题一:`import: not authorized ‘rospy‘ 和SyntaxError: Non-ASCII character ‘\xe5‘ in file
  • 问题二:SyntaxError: Non-ASCII charact

问题描述:在进行ros开发时,遇到下面这些异常,这些异常主要是在写python代码是最常出现的,可以应用在解决其他出现在如下的开发场景异常中。

问题一:`import: not authorized ‘rospy‘ 和SyntaxError: Non-ASCII character ‘\xe5‘ in file

#! /usr/bin/env python
#coding=utf-8


# from os import putenv
import rospy
# from std_msgs import msg
from std_msgs.msg import String  # 发布的消息类型

'''
    使用欧Python 实现消息发布:
    1. 导包;
    2. 初始化ros节点
    3. 创建发布者对象;
    4. 编写发布逻辑并发布数据。
'''


if __name__ ==  "__main__":
    
    # 2. 初始化ros节点
    rospy.init_node("sanDai")  #传入节点名称
    # 3. 创建发布者对象;
    pub = rospy.Publisher("che",String,queue_size=10)
    # 4. 编写发布逻辑并发布数据。 
    # 创建数据
    msg = String()
    # 使用循环发布数据
    while not rospy.is_shutdown():
        msg.data = "hello"
        # 发布数据
        pub.publish(msg)

记录一下遇到的错误:

  1. 如果Python文件中有中文,会抛出异常SyntaxError: Non-ASCII character '\xe5' in file

    解决方法:在Python文件前加上一句

    #coding=utf-8
    
  2. 在运行python时,抛出异常import: not authorized 'rospy' @ error/constitute.c/WriteImage/1028.

    解决方法:在python文件前面加上一句 --> 指定一下解释器

    #! /usr/bin/env python
    
  3. 如果吧#coding=utf-8放在第一行,#! /usr/bin/env python放在第二行,还是会出现问题2,所以他们之间的顺序应该如下:

    #! /usr/bin/env python
    #coding=utf-8
    

问题二:SyntaxError: Non-ASCII character ‘\xe5‘ in file

原因: Python默认是以ASCII作为编码方式的,如果在自己的Python源码中包含了中文(或者其他非英语系的语言),此时即使你把自己编写的Python源文件以UTF-8格式保存了,但实际上,这依然是不行的。

注意:这句话最好加载python文件的最开始,在进行导包,编写代码。

解决方案: 在py文件开头写入以下命令

#coding=utf-8  
## 或者(二选一)
# -*- coding: UTF-8 -*-