欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python-Non-UTF-8 code starting with ‘\xbd‘ in file C:/Users/Adminis.....出错

程序员文章站 2022-04-28 20:41:34
文章目录问题解释原因问题这句出错的含义是使用utf-8格式无法对你写的代码进行解码,也就无法编译了。解决方法是告诉编译器使用其他可以用的解码方式解码怎么告诉它?解释在代码第一行添加一个解码方式注释就好了只能是第一行,前面可以有注释不能有代码,因为指定了,编译期就使用指定解码方法,第一行不指定解码方法就使用默认方法,写在后面它不承认编译期解码的时候如果看到了这行注释就会使用注释的编码方式解码,没看到就使用默认方式# coding=gbk不仅是gbk,还可以是其他的如iso等等解码方式...

文章目录

问题

这句出错的含义是使用utf-8格式无法对你写的代码进行解码,也就无法编译了。
解决方法是告诉编译器使用其他可以用的解码方式解码
怎么告诉它?

解释

在代码第一行添加一个解码方式注释就好了
只能是第一行,前面可以有注释不能有代码,
因为指定了,解码器就使用指定解码方法;不算注释,如果第一行不指定解码方法解码器就会使用默认方法解码代码,写在代码后面它不承认
解码器解码的时候如果看到了这行注释就会使用注释的编码方式解码,没看到就使用默认方式

# coding=gbk

不仅是gbk,还可以是其他的如iso等等解码方式
java也会出现这种解码方式错误的问题
解决方法是

javac -encoding utf-8 Test.java

原因

那么为什么会发生这种情况呢?
首先理解python执行代码的三个过程

  1. 用二进制读取代码文件进内存
  2. 将内存中的二进制文件解码为python代码
  3. 执行得到的python代码
    问题出在第二步上,如果文件是gbk格式,你使用iso等方式解码就会解码错误,得不到正确代码,当然也无法执行第三步

第二步中,python解释器会先读取前两行文件内容(读到二进制的换行符号(0x0A或0x0D0A或单独的0x0D)就是一行),然后用默认的编码方式1对其进行解码,之后会用正则表达式coding[:=]\s*([-\w.]+)进行匹配查找代码指定的解码方式,再用找到的正则表达式的第一个分组作为编码方式对源码文件的二进制内容进行解码,得到python语句。

详细的解释看:
https://blog.csdn.net/xuejianbest/article/details/100660402?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control&dist_request_id=7b392762-5fdc-40fc-b0f4-895ea74b9e29&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control

本文地址:https://blog.csdn.net/lidashent/article/details/113984307

相关标签: python