小编rus*_*sso的帖子

如何在Windows控制台中显示utf-8

我在Windows 7上使用Python 2.6

我从这里借了一些代码: Python,Unicode和Windows控制台

我的目标是能够在Windows控制台中显示uft-8字符串.

显然在python 2.6中

sys.setdefaultencoding函数()

不再受支持

但是,在我尝试使用它之前,我写了reload(sys),它神奇地没有错误.

此代码不会出错,但会显示有趣的字符而不是日文文本. 我相信问题是因为我没有成功更改Windows控制台的代码页.

这些是我的尝试,但它们不起作用:

reload(sys)
sys.setdefaultencoding('utf-8')

print os.popen('chcp 65001').read()

sys.stdout.encoding = 'cp65001'
Run Code Online (Sandbox Code Playgroud)

也许您可以使用win32console来更改代码页? 我尝试了我链接的网站上的代码,但它也从win32console中出错..也许该代码已经过时了.

这是我的代码,这不是错误,但打印有趣的字符:

#coding=<utf8>
import os
import sys
import codecs



reload(sys)
sys.setdefaultencoding('utf-8')
sys.stdout = codecs.getwriter('utf8')(sys.stdout)
sys.stderr = codecs.getwriter('utf8')(sys.stderr)

#print os.popen('chcp 65001').read()
print(sys.stdout.encoding)
sys.stdout.encoding = 'cp65001'
print(sys.stdout.encoding)

x = raw_input('press enter to continue')

a = '???????'#.decode('utf8')
print a

x = raw_input()
Run Code Online (Sandbox Code Playgroud)

python windows console utf-8

15
推荐指数
3
解决办法
3万
查看次数

在Windows中更改控制台字体

有没有办法在python 2.6中更改Windows中的控制台字体?

我在Windows 7上.

即:

import os
os.console.font = 'Lucida Console'
Run Code Online (Sandbox Code Playgroud)

*编辑 (意外发布此答案)

更多信息和问题:

我查看了Windows API:http: //msdn.microsoft.com/en-us/library/ms682073%28v=VS.85%29.aspx

看起来它具有更改控制台字体的功能:

SetCurrentConsoleFontEx
Run Code Online (Sandbox Code Playgroud)

或者至少获取有关当前字体的信息:

GetCurrentConsoleFont
GetCurrentConsoleFontEx
Run Code Online (Sandbox Code Playgroud)

我的下一步是找到一个可以使用windows API的python模块.这是一个名为pywin32:http: //sourceforge.net/projects/pywin32/

你导入的实际模块不是pywin32,而是win32api,win32net,win32console我通过完全的猜测来解决这个问题.文档在哪里?帮助运行('win32console')

没有在那里显示所提到的字体功能,它只是简单地遗漏了它们.我在这里错过了什么吗?文档在哪里?或者哪个模块具有所有API的控制台功能......?

python windows

6
推荐指数
2
解决办法
1万
查看次数

代替你的'弦'

我用UTF-8编码保存了我的脚本.

我将Windows上的代码页更改为65001.

我在python 2.6上

脚本#1

# -*- coding: utf-8 -*-
print u'Español'
x = raw_input()
Run Code Online (Sandbox Code Playgroud)

脚本#2

# -*- coding: utf-8 -*-
a = 'Español'
a.encode('utf8')
print a
x = raw_input()
Run Code Online (Sandbox Code Playgroud)

脚本#1,打印单词罚款没有错误,脚本#2做错误:

UnicodeDecodeError:'ascii'编解码器无法解码位置4中的字节0xf1:序数不在范围内(128)

我希望能够像脚本#2一样动态地打印此变量而不会出现错误.我把提到的编码('utf8')相当于做了你的字符串'

显然,这并不是因为它会引发错误.我怎么能这样做呢?

python utf-8

1
推荐指数
2
解决办法
748
查看次数

标签 统计

python ×3

utf-8 ×2

windows ×2

console ×1