IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python编程问题——中文字符无法被识别,SyntaxError: Non-ASCII character ‘ |xe5‘ in file 20.valid_parentheses.py on lin -> 正文阅读

[Python知识库]Python编程问题——中文字符无法被识别,SyntaxError: Non-ASCII character ‘ |xe5‘ in file 20.valid_parentheses.py on lin

1. 问题描述

在运行Python代码时出现以下问题:

SyntaxError: Non-ASCII character ‘\xe5’ in file 20.valid_parentheses.py on line 29, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

2. 问题产生原因

这个问题产生的原因:通常是Python2的编译器无法识别中文字符。

在Python2中,文字的默认编码方式是ASCII码,这对亚洲等语言非常不友好,注释难以编码。

在Python3中,文字的默认编码方式是Unicode,采用的传输格式是utf-8。

3. 解决方法

在Python文件的第一行或第二行添加(必须是在源文件的第一行或者第二行)

	# -*- coding:utf-8 -*-

这个写法有多种方式,最好使用这一种,这是PEP-0263的建议,因为Emacs等编辑器使用这种方式进行编码声明。

当然,最根本的方法就是直接使用Python3的编译器。Python3在Python2的基础上做了很大改动,更加的好用,建议尽量使用Python3。

4. 知识扩展

  • 字符集
    计算机只能识别0和1,如果想要显示人类能够轻松易读的符号,或者将人能轻松读出的符号让计算机理解,就需要我们将0、1和人类易读符号进行互相转换。
    字符集就是用来做这种转换的规则。常用的有ASCII编码,UNICODE编码等很多其他编码。

  • ASCII编码
    ASCII编码最早是美国用的,后来国际化了之后为了兼容其它语言文字做了扩展,这个应该是大家熟知的。
    ASCII编码表:
    在这里插入图片描述

  • UNICODE编码
    ASCII码无法兼容所有的语言,这是由其编码的位数决定的,8位难以表示所有字符,尤其是汉字。所以很多国家开始研究自己的字符集,包括我国的GB2312、GBK、GB18030。这导致一个问题:每个国家用自己的字符集,那么在进行交流的时候总是需要做字符集的转换。

    这个时候ISO(国际标准化组织)出面制定了UNICODE编码,统一采用16位进行编码,编码空间很大;兼容ASCII码,对于其他的编码全部没有提供兼容。这个编码方案的全名是Universal Multiple-Octet Coded Character Set,简称UCS,俗称UNICODE。

  • UTF传输格式
    UTF全称是UCS Transfer Format,是UNICODE代码点(code point)的实际表示方式。按照其基本长度占用的位数分为UTF-8/16/32。

    尽管UNICODE提供了16位的编码空间,但是仍然不能包含历史上所有的文字,也不能解决传输的问题。所以UNICODE用一些基本的保留字符制定了三套编码方式:UTF-8、UTF-16、UTF-32。

    在讨论UNICODE时,搞清楚编码方式非常重要。

    UTF-8
    以8位序列编码,用一个或几个字节来表示一个字符。可以兼容ASCII编码作为它的一部分。它是变长编码,是压缩的Unicode编码方式,可以节省空间。
    UTF-16
    UNICODE通常是指UTF-16。它的长度相对固定,不超出范围时用两个字节表示,超出之后用四个字节表示。按照高低位字节顺序,又分为UTF-16BE/UTF-16LE。
    UTF-32
    长度始终固定,每个Unicode代码点用4字节表示,按照高低位字节顺序又分为UTF-32BE/UTF-32LE。

    以UTF-8为例,在传输一个字符时,每次传输8位数据。但是要注意的是,为了保证安全,在传输时UNICODE到UTF是通过一定的算法转换的,并不是直接对应。

    UTF-8使用多的原因是:第一,可以容纳所有字符,兼容ASCII码;第二,UTF-8是变长的,更加节省空间。

更多关于Unicode的信息可以参考wikiUnicode官网介绍

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-26 12:10:07  更:2021-10-26 12:12:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:53:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码