返回顶部
首页 > 资讯 > 后端开发 > Python >解决python2中unicode()函数在python3中报错的问题
  • 662
分享到

解决python2中unicode()函数在python3中报错的问题

2024-04-02 19:04:59 662人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

python2中的unicode()函数在python3中会报错: NameError: name 'unicode' is not defined There is no su

python2中的unicode()函数在python3中会报错:

NameError: name 'unicode' is not defined

There is no such name in Python 3, no. You are trying to run Python 2 code in Python 3. In Python 3, unicode has been renamed to str.

翻译过来就是:Python 3中没有这样的名字,没有。 您正在尝试在Python 3中运行Python 2代码。在Python 3中,unicode已重命名为str。

函数转换:unicode()到 str()为:


//python2:
unicode(nn,'utf-8')
//python3:
str(nn)

补充:根本解决Python2中unicode编码问题

Python2中编码问题

因为计算机只识别01这要的二进制,所以在计算机存储我们的文件时,要使用二进制数来表示。所以编码就是哪个二进制数表示哪个字符:

编码原由系统编码、文件编码与python系统编码Python字符编码python中的字典、数组转字符串中的中文编码

编码原由

ASCII编码

最早出现的是ASCII码,使用8位二进制数组合表示128种字符。因为ASCII编码是美国人发明的,当初没考虑给别的国家用,所以,它仅仅表示了所有美式英语的语言字符。但是没有使用完。

ISO 8859-1/windows-1252

128位字符满足了美国人的需求,但是随之欧洲人加入互联网,为了满足欧洲人的需求,8位二进制后面还有128位。这一段编码我们称之扩展字符集,即ISO 8859-1编码标准,后来欧洲的需求变更,即规定了windows-1252代替了ISO 8859-1

GB2312

然后当我国加入后,8位二进制(即一个字节)用完了,于是我们保留ASCII编码即前128位,后面的全部删除。因为我国得语言博大精深,所以需要2个字节,即16位才能满足我们得需求,所以当计算机遇到大于127的字节时,就一次性读取两个字节,将他解码成汉字。即GB2312编码

GBK

相当于GB2312的改进版,增添了中文字符。但还是2个字节表示汉字

GB18030

为了满足日韩和我国的少数民族的需求,对GBK的改进,使用变长编码,要么使用两个字节,要么使用四个字节。

Unicode

虽然每种编码都兼容ASCII编码,但是各个国家是不兼容的。于是出现了Unicode,它将所有的编码进行了统一。它不能算是一种具体的编码标准,只是将全世界的字符进行了编号,并没有指定他们具体在计算机种以什么样的形式存储。

它的具体实现有UTF-8,UTF-16,UTF-32等。

系统编码、文件编码与python系统编码

linux中获取系统编码结果:

这里写图片描述

Windows系统的编码,代码页936表示GBK编码

这里写图片描述

可以看到linux系统默认使用UTF-8编码,windows默认使用GBK编码。Linux环境下,文件默认使用UTF-8编码。当然你也可以指定文件编码方式。

Python解释器内部默认使用的ASCII编码方式去解读python源文件。

这里写图片描述

所以当文件内存在非ASCII字符时,python解释器无 法识别,就会出现编码错误。

这里写图片描述

So,这个时候需要告诉python解释器用utf-8去解读python源文件

这里写图片描述

这里写图片描述

Python字符编码

Python2中有两类字符串,分别是str与unicode。这两类字符串都派生自抽象类basestring。 Str即普通字符串类型

这里写图片描述

在字符串前加上u即unicode编码

这里写图片描述

在代码中通常用到的是unicode,文件保存的是utf-8编码。Unicode编码是固定2个字节代表一个字符。Utf-8是对英文只用一个字节,对中文是3个字节。所以unicode运行效率高,utf-8运行效率相比要低,但是空间存储要小。

这里写图片描述

Python中str与unicode转换

Unicode转str

这里写图片描述

str转unicode

这里写图片描述

其函数中参数UTF-8是,以utf-8编码对unicode对象解码,或编码。

python中的字典、数组转字符串中的中文编码

当字典中的中文字符是unicode类型时

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

decode(“unicode-escape”)相当是反向编码.然后再进行utf-8编码即可

当字典中的字符串是string类型时


name = {"name": "中国"}
name = str(name)
print name.decode("string-escape")

这里写图片描述

当数组进行字符串化时

这里写图片描述

最后总结

不管是数组还是字典,在进行字符串转换是,即是又一次编码,所以,对于本身还有的中文字符串又一次编码,所以要进行一次反编码,才能看到原有的编码。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。如有错误或未考虑完全的地方,望不吝赐教。

--结束END--

本文标题: 解决python2中unicode()函数在python3中报错的问题

本文链接: https://lsjlt.com/news/125748.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 解决python2中unicode()函数在python3中报错的问题
    python2中的unicode()函数在python3中会报错: NameError: name 'unicode' is not defined There is no su...
    99+
    2024-04-02
  • 解决python3中自定义wsgi函数,make_server函数报错的问题
    #coding:utf-8 from wsgiref.simple_server import make_server def RunServer(environ, start_response): ...
    99+
    2022-06-04
    函数 自定义 报错
  • 解决python3 urllib中urlopen报错的问题
    前言 最近更新了Python版本,准备写个爬虫,意外的发现urllib库中属性不存在urlopen,于是各种google,然后总结一下给出解决方案 问题的出现 AttributeError: 'mo...
    99+
    2022-06-04
    报错 urllib urlopen
  • JAVA中的Unicode编码问题怎么解决
    在Java中解决Unicode编码问题有多种方法:1. 使用正确的字符编码读取和写入文件:当从文件中读取或写入文本时,需要注意使用正...
    99+
    2023-08-19
    JAVA
  • 解决PHP7特性在PHPStorm中的报错问题
    解决PHP7特性在PHPStorm中的报错问题 PHPStorm是一个强大的PHP集成开发环境,但在使用过程中,有时会出现对PHP7特性的报错问题。本文将通过具体的代码示例和解决方法来...
    99+
    2024-04-02
  • 解决SpringBoot中@Email报错问题
    JSR303校验相关 现象:在springboot中使用@Email注解进行数据校验时,报没有该注解的错误。 解决方法: 在pom.xml中加该配置 <dependenc...
    99+
    2024-04-02
  • 解决python3 中的np.load编码问题
    由于在Python2 中的默认编码为ASCII,但是在Python3中的默认编码为UTF-8。 问题: 所以在使用np.load(det.npy)的时候会出现错误提示: you m...
    99+
    2024-04-02
  • Python2.x版本中基本的中文编码问题解决
    Python 输出 "Hello, World!",英文没有问题,但是如果你输出中文字符"你好,世界"就有可能会碰到中文编码问题。 Python 文件中如果未指定编码,在执行过程会出现报错: #!/u...
    99+
    2022-06-04
    中文 版本
  • python中的unicode错误怎么解决
    在Python中,Unicode错误通常是由于字符串编码不匹配或无效的Unicode字符引起的。解决Unicode错误的方法取决于具...
    99+
    2023-08-25
    python unicode
  • 如何解决mysql中workbench报错的问题
    这篇文章主要介绍如何解决mysql中workbench报错的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql 中workbench报错的解决办法:首先打开找到workbe...
    99+
    2024-04-02
  • 怎么解决Mysql中的Last_Errno报错问题
    本篇内容主要讲解“怎么解决Mysql中的Last_Errno报错问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决Mysql中的Last_Errno报错...
    99+
    2024-04-02
  • 怎么解决es6中import报错的问题
    这篇文章将为大家详细讲解有关怎么解决es6中import报错的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 es6 import报错的解...
    99+
    2024-04-02
  • 怎么解决php中mysql_query报错的问题
    这篇文章给大家分享的是有关怎么解决php中mysql_query报错的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php mysql_query报错的解决办法:1、使用代码“$db=$db$db:new m...
    99+
    2023-06-14
  • 解决Python中使用pd.read_excel报错的问题
    解决Python中使用pd.read_excel报错的问题 在Python中,我们常常需要读取Excel表格文件来进行数据分析和处理。其中,pandas库的read_excel函数是一个十分常用的方法...
    99+
    2023-09-01
    python excel 开发语言
  • maveninstall报错中程序包xxx不存在的问题解决
    目录问题解决1、依赖未声明或者未下载成功2、引用的是本地模块,但是未打包到本地maven仓库3、父子项目包名不一致注意事项4、maven仓库路径不对5、重启idea6、清空targe...
    99+
    2024-04-02
  • python3 解决requests出错重试的问题
    对python3下的requests使用并不是很熟练,今天稍微用了下,请求几次下来后发现出现连接超时的异常,上网查了下,找到了一个还算中肯的解决方法。 retrying是python...
    99+
    2024-04-02
  • 解决python3安装pandas出错的问题
    安装pandas出错: Running setup.py (path:/data/envs/py3/build/pandas/setup.py) egg_info for pack...
    99+
    2024-04-02
  • 怎么解决node中400报错问题
    这篇文章给大家分享的是有关怎么解决node中400报错问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。node 400报错的解决办法:1、查看nodeJS请求HTTP报错的信息...
    99+
    2024-04-02
  • 如何解决php中use报错问题
    这篇文章将为大家详细讲解有关如何解决php中use报错问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php use报错的解决办法:1、打开相应的代码文件;2、使用require引入文件;3、使用use...
    99+
    2023-06-22
  • vue中template报错问题怎么解决
    这篇文章主要讲解了“vue中template报错问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue中template报错问题怎么解决”吧!template报错写这个纯粹是为了纪...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作