`
desert3
  • 浏览: 2159441 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

python在pydev,IDLE,命令行出现乱码的原因及解决

阅读更多

#! /usr/bin/env python

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

#@author zcwang3@gmail.com

#@version 2010-09-07 11:22

 

# 原始字符串

rstr = r " 编码 "

# 普通字符串

str = " 编码 "

#Unicode 字符串

ustr = u " 编码 "

# utf-8 编码把 str 转换为 unicode

utf8ToUnicodeStr=str.decode( 'utf-8' )

粘贴到 CMD 启动的 PYTHON 命令行中的运行结果: UnicodeDecodeError( 命令行中默认使用的是 windows 系统的 gbk 编码, str 就是使用 gbk 编码的字符串,使用 utf-8 解码时部分字节值超出 utf-8 范围,系统错误 )

# gbk 编码把 str 转换为 unicode

gbkToUnicodeStr=str.decode( 'gbk' )

 

rstr

str

ustr

utf8ToUnicodeStr

gbkToUnicodeStr

print len(rstr)

pydev 中的运行结果: 6 (显示:文件头部声明的 utf-8 编码起作用,并且 1 个汉字占 3 位)

IDLE 中的运行结果: 6 (显示:文件头部声明的 utf-8 编码起作用,并且 1 个汉字占 3 位)

粘贴到 CMD 启动的 PYTHON 命令行中的运行结果: 4 (显示:命令行中默认编码 gbk 1 个汉字占 3

print len(str)

pydev 中的运行结果: 6

IDLE 中的运行结果: 6

粘贴到 CMD 启动的 PYTHON 命令行中的运行结果: 4

原始字符串和普通字符串有相同的结果

print len(ustr)

pydev 中的运行结果: 2

IDLE 中的运行结果: 2

粘贴到 CMD 启动的 PYTHON 命令行中的运行结果: 2

通过使用 u 来标志的 unicode 字符在 3 种情况下结果一致, 1 个汉字占 2

print len(utf8ToUnicodeStr)

pydev 中的运行结果: 2 (通过正确的编码,转换成相应的 unicode 字符串)

IDLE 中的运行结果: 2 (通过正确的编码,转换成相应的 unicode 字符串)

粘贴到 CMD 启动的 PYTHON 命令行中的运行结果:变量未定义

print len(gbkToUnicodeStr)

pydev 中的运行结果: 3 utf-8 声明的字符串,用 gbk 解码,结果是乱码)

IDLE 中的运行结果: 3

粘贴到 CMD 启动的 PYTHON 命令行中的运行结果: 2

 

print rstr

print str

print ustr

print utf8ToUnicodeStr

print gbkToUnicodeStr

 

IDLE 中的运行结果和通过 python + py 文件的运行结果完全一致!

 

Pydev 中模块的默认编码在文件头声明(没有声明就是 ascii ),控制台显示的默认编码和 文件头声明的编码 一致

IDLE 中调用时模块的默认编码在文件头声明(没有声明就是 ascii ),控制台显示的默认编码和 操作系统默认编码一致(如中文 windows 下的 gbk 一致

粘贴到 CMD 启动的 PYTHON 命令行中,直接声明的字符串的默认编码和命令行中显示的默认编码都是 操作系统默认编码一致(如中文 windows 下的 gbk

 

结论:

1, 乱码,编码错误出现的原因:字符串 str 声明时编码为 a ,而输出(控制台显示或者写入文件,数据库等)时由于环境的不同,默认编码也不同。在不同的环境下, python 会根据各自的默认编码去解码字符串 a 因此 出现乱码( str 对应的 a 编码的值正好都在 b 编码的取值范围内) 或者 编码错误(譬如: a 编码中有值 10000 2 进制的形式),但是 b 编码的取值范围不包括 10000 ,就会出现转换错误)

2, 如果变量直接声明为 Unicode 字符,那么在不同输出环境时, python 都能正常地转换为相应的字符串

3, 通过 u 符号声明的 Unicode 字符串在上述 3 种情况下都不出现乱码, 推荐使用

4, 原始字符串和普通字符串声明的字符串的默认编码跟系统环境相关, python 命令行中默认的是操作系统的编码如 windows gbk pydev 或者 idle 中,字符串的默认编码跟文件头部声明的编码一致(如果文件头部没有声明,那么默认的是 ascii 编码)

 

分享到:
评论

相关推荐

    python.pydev python.pydev

    python.pydevpython.pydevpython.pydevpython.pydevpython.pydevpython.pydev eclipse启动时须 带-clean 须设置Python的环境变量

    eclipse python 插件 pydev

    8. **多语言支持**:除了Python,PyDev还支持Jython和IronPython,这意味着你可以在同一环境中开发Python的Java和.NET实现。 9. **版本控制集成**:PyDev与其他版本控制系统(如Git、SVN)无缝集成,方便代码版本...

    python.pydev eclipse 插件

    org[1].python.pydev.feature-1.4.6.2788.zip org[1].python.pydev.feature-1.4.6.2788.zip org[1].python.pydev.feature-1.4.6.2788.zip 正在使用。。。。

    eclipse python插件 pydev6.5

    标题提到的“eclipse python插件 pydev6.5”,正是PyDev的6.5版本,它提供了一系列高级特性,旨在提升开发者在Eclipse环境中的编程体验。 PyDev 6.5版本的核心特性包括: 1. **代码完成**:PyDev提供了智能的代码...

    org.python.pydev.feature-1_3_24.zip

    "org.python.pydev.feature-1_3_24.zip" 是一个与Python开发相关的压缩包文件,主要用于Eclipse集成开发环境(IDE)。PyDev是Eclipse的一个插件,它为Python开发者提供了强大的支持,包括代码编辑、调试、语法高亮、...

    eclipse的python插件PyDev7.3.0

    PyDev是Eclipse社区的成员之一,由Fabio Zadrozny维护,旨在为Python开发提供完整的IDE解决方案。PyDev 7.3.0是该插件的一个版本,它支持Python 3.x版本,这在Python逐渐过渡到主要支持3.x系列的背景下显得尤为重要...

    python for eclipse插件PyDev

    PyDev是Eclipse平台上的一个优秀Python开发工具,其强大的功能和良好的集成性让Python开发者能在一个统一的环境中进行高效的开发工作。了解和掌握PyDev的使用,将极大地提升你的Python编程体验。在实际应用中,根据...

    eclipse插件pydev for python

    PyDev是Eclipse中的一个强大的Python开发插件,它为Python开发者提供了丰富的功能,使得在Eclipse中编写、调试和管理Python项目变得极其便捷。 **PyDev 插件的主要功能** 1. **代码编辑器**: PyDev提供了一个智能...

    eclipse开发工具python插件Pydev

    PyDev就是这样一个插件,专门为在Eclipse中开发Python项目而设计。本文将详细介绍如何配置Eclipse以使用PyDev进行Python开发,以及离线安装Pydev插件的方法。 首先,让我们了解PyDev。PyDev是Eclipse的一个扩展,由...

    python.pydev.

    PyDev使得Python程序员能够在Eclipse这个强大的平台上享受到代码编辑、调试、自动化重构以及项目管理等一系列专业功能。 首先,PyDev插件提供了智能代码补全功能,这使得在编写Python代码时,能够自动提示类、方法...

    python-pydev-django

    Python PyDev与Django是两个在IT领域中非常重要的开源工具,它们分别是Python开发环境和一个流行的Web框架。PyDev是Eclipse IDE的一个扩展,它为Python开发提供了强大的支持,而Django则是一个用Python编写的高效、...

    Python for Eclipse PyDev 4.5.5

    《Python for Eclipse PyDev 4.5.5:探索高效Python开发的新里程》 Python for Eclipse PyDev是一款专为Eclipse集成开发环境(IDE)设计的Python开发插件,其最新版本4.5.5提供了丰富的功能,旨在提升Python开发者的...

    eclipse中Python插件pyDev7.2.1

    7. **集成单元测试**:PyDev支持Python的unittest框架,允许用户在Eclipse环境中编写、运行和管理单元测试。 8. **集成版本控制系统**:PyDev与常见的版本控制系统(如Git、SVN等)集成,方便进行代码版本管理和...

    myeclipse安装python插件pydev说明.pdf

    在开发Python项目时,集成开发环境(IDE)的选择至关重要,MyEclipse作为一款强大的Java IDE,通过安装Python插件PyDev,可以扩展其功能,支持Python语言的开发。本文将详细介绍如何在MyEclipse中安装PyDev插件,并...

    eclipse中Python插件pyDev5.9.2

    在众多的Python集成开发环境中,Eclipse与PyDev的组合以其强大的功能和高度的可定制性赢得了广大开发者们的喜爱。PyDev是Eclipse的一个插件,专门用于Python和Jython的开发,其最新版本PyDev 5.9.2更是提升了开发...

    eclipse中Python插件pyDev6.5.0

    在众多的Python集成开发环境(IDE)中,Eclipse与PyDev的组合以其强大的功能和高度可定制性深受开发者喜爱。PyDev是Eclipse的一个开源插件,专为Python、Jython和IronPython的开发提供支持。本文将深入探讨PyDev ...

    python27 pydev py2exe 32位统一资源

    Python 2.7、PyDev 和 py2exe 是在 Python 开发中经常使用的三个关键工具。这个压缩包可能包含了这些工具的32位版本,适用于那些仍需在32位系统上运行Python项目的用户。 首先,让我们分别了解这三个组件: 1. **...

    Python安装过程及在安装Pydev时遇到的问题的解决办法

    安装过程中,确保勾选“Add Python to PATH”选项,这样可以将Python添加到系统路径,方便在命令行中直接调用。 安装完成后,通过命令行输入`python --version`来验证Python是否正确安装。如果显示了正确的版本号,...

    eclipse中Python插件pydev 4.5.5

    PyDev 4.5.5是这个插件的一个版本,它在Eclipse中为Python开发者提供了许多实用特性。 1. **安装与配置**:PyDev的安装通常通过Eclipse的内置软件更新器进行,用户可以在"Help" -> "Eclipse Marketplace"中搜索并...

    Eclipse开发Python插件(PyDev)

    这些功能使得Eclipse通过PyDev成为了一个全面的Python开发解决方案。 总的来说,通过安装PyDev插件,Eclipse成为了Python开发的强大平台,提供了高效、完善的开发环境。无论是初学者还是经验丰富的开发者,都可以...

Global site tag (gtag.js) - Google Analytics