我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python2.7在Windows下CM

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python2.7在Windows下CM

使用python2.7处理unicode的字符串,环境变量已设置PYTHONIOENCODING为utf-8,cmd编码为utf-8时print unicode字符串会报错[Errno 0]或[Errno 2](python3.6环境下未出现此问题)

#coding:utf-8
import os
os.system("chcp 65001")
a = u"你好こんにちは"
print a

此时会报错,如果字符串只含ASCII字符就不会报错

 

经查这是windows实现C函数的问题

https://bugs.python.org/issue1602#msg148990

The underlying cause of Python's write exceptions with cp65001 is:

The ANSI C write() function as implemented by the Windows console returns the number of _characters_ written rather than the number of _bytes_, which Python reasonably interprets as a "short write error". It then consults errno, which gives the effectively random error message seen.

This can be bypassed by using os.write(sys.stdout.fileno(), utf8str), which will a) succeed and b) return a count <= len(utf8str).

With os.write() and an appropriate font, the Windows console will correctly display a large number of characters.

Possible workaround: clear errno before calling write, check for non-zero errno after. The vast majority of (non-Python) applications never check the return value of write, so don't encounter this problem.

解决方法

方法1 使用win_unicode_console模块

1.安装

pip install win_unicode_console

2.使用

很简单,导入后设置开启就行

#coding:utf-8
import os
import win_unicode_console

win_unicode_console.enable()

os.system("chcp 65001")
a = u"你好こんにちは"
print a

方法2 不使用print

 根据issue的描述,可以用os.write(sys.stdout.fileno(), utf8str)的方式绕过

此时字符串不加u前缀,直接写入str类型

#coding:utf-8
import os
import sys
os.system("chcp 65001")
a = "你好こんにちは"
os.write(sys.stdout.fileno(), a)

偷懒方法

1.使用pycharm执行不会报错,推测pycharm自行修复了这个问题

2.只输出中文的话,那就不用utf8了,直接chcp 936然后输出a.encode("gbk","ignore")

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python2.7在Windows下CM

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python2.7在Windows下CM

使用python2.7处理unicode的字符串,环境变量已设置PYTHONIOENCODING为utf-8,cmd编码为utf-8时print unicode字符串会报错[Errno 0]或[Errno 2](python3.6环境下未出
2023-01-31

npm安装windows-build-tools卡在Successfully installed Python2.7

这篇文章主要介绍了npm安装windows-build-tools卡在Successfully installed Python2.7的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

Python3.7与Python2.7怎么在centos7下兼容并存

本篇内容介绍了“Python3.7与Python2.7怎么在centos7下兼容并存”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、下载p
2023-06-02

在Windows下,python-Lev

(1)首先下载python-Levenshtein 网址:https://pypi.python.org/pypi/python-Levenshtein/0.10.2 (2)在切换到第三方包所在目录下,执行pip setup.py inst
2023-01-31

在Windows下安装Python3.7

1.点击下面的链接直接下载安装包https://github.com/kennethreitz/requests/zipball/master2.下载下来之后解压,放到一个目录下,比如d:\request现在的目录结构大致是这样:D:   
2023-01-31

Python在windows下安装

1. 用浏览器打开 http://notepad-plus-plus.org/ 下载并安装 Notepad++ 文本编辑器。这个操作无需管理员权限。2. 把 Notepad++ 放到桌面或者快速启动栏,这样你就可以方便地访问到该程序了。这两
2023-01-31

在windows下配置apache以cg

Apache配置在httpd.conf中查找DocumentRoot:允许目录可以执行cgi:DocumentRoot  "D:\WWW"    Options Indexes FollowSymLinks Mul
2023-01-31

实现在Windows下安装Lighttpd

在Windows下安装Lighttpd,您需要按照以下步骤进行操作:1. 首先,前往Lighttpd的官方网站(https://www.lighttpd.net/)下载Windows版本的安装程序(Windows Binary)。2. 下载
2023-09-08

怎么在Windows下搭建Linux

这篇文章主要讲解了“怎么在Windows下搭建Linux”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在Windows下搭建Linux”吧!在我们学习计算机的时候,应用的操作系统不是Wi
2023-06-16

在Windows 7下安装Live Essentials

以下是在Windows 7下安装Windows Live Essentials的步骤:1. 打开浏览器,然后访问微软的官方网站。2. 在搜索框中输入“Windows Live Essentials”并搜索。3. 在搜索结果中找到并点击“Wi
2023-09-22

使用Python在Windows下调用W

import os  import time   source='C:\\Linda\\Test\\Python\\source' target_dir='C:\\Linda\\Test\\Python\\backup\\'  target
2023-01-31

windows下pdffactorypro如何在CAD里用

本文小编为大家详细介绍“windows下pdffactorypro如何在CAD里用”,内容详细,步骤清晰,细节处理妥当,希望这篇“windows下pdffactorypro如何在CAD里用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入
2022-12-03

windows microsoft store下载位置在哪

这篇“windows microsoft store下载位置在哪”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“windows
2023-07-01

Rsync在windows系统下怎么用

这篇文章主要介绍了Rsync在windows系统下怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Rsync 使用起来非常简单、方便,若使用得当的话还可以增强操作的安全性
2023-06-16

windows camtasiastudio下载后的位置在哪

本篇内容主要讲解“windows camtasiastudio下载后的位置在哪”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“windows camtasiastudio下载后的位置在哪”吧!ca
2023-07-01

Go build,带模块,在 Alpine 镜像下失败,但在 Windows 下正常

来到编程网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《Go build,带模块,在 Alpine 镜像下失败,但在 Windows 下正常》,介绍一下,希望对大家的知识积累有所帮助,助
Go build,带模块,在 Alpine 镜像下失败,但在 Windows 下正常
2024-04-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录