【问题标题】:unicode window title on windowswindows上的unicode窗口标题
【发布时间】:2015-11-16 13:36:44
【问题描述】:

我认为在 21 世纪这不是问题,但是:

import sys
from PySide import QtGui
print('\u2122')
app = QtGui.QApplication(sys.argv)
widget = QtGui.QWidget()
widget.setWindowTitle('\u2122')
widget.show()
sys.exit(app.exec_())

在 Ubuntu 上,在窗口和终端中都显示商标符号,在 Windows (10) 上,它在两个地方都显示 \u2122。我在两个系统上都使用python 3.4,在 Windows 上它是 Canopy 安装,如果有帮助的话,但可能与此完全无关。如何让 unicode 字符也显示在 Windows 上?

编辑

好的,事实证明拥有print() 并不能使它成为python 3,我的错。虽然当我将字符串修复为u'\u2122 时,Windows python 2.7.9 给出了一个有趣的错误:

File "C:\Program Files\Enthought\Canopy32\App\appdata\canopy-1.5.5.3123.win-x86\lib\encodings\cp852.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u2122' in position 0: character maps to <undefined>

无论如何,安装 3.x 将解决问题。

【问题讨论】:

  • 您确定您的 Windows 安装是 3.x 吗?所描述的行为将在 Python 2.x 下发生。作为测试,将字符串更改为 2.x Unicode 字符串,看看会发生什么。例如。 u'\u2122'
  • 我很确定因为print() 在 python 2.x 下应该给我一个错误,对吧?但我会检查:)
  • 不,print() 在某些时候成为 2.x 中的有效语法
  • @AlastairMcCormack,在 2.x 中 print() 只是打印(不必要的)括号中的表达式。这不是函数调用。如果您尝试print('a', 'b'),您会看到它会将('a', 'b') 解析并打印为一个元组。

标签: windows python-3.x unicode


【解决方案1】:

确保您的 Windows 机器上安装了 Python 3.x。结果与使用 Python 2.x 一致。

要使用 2.x 编写代码,请将字符串更改为 Unicode 字符串,方法是在每个字符串后面附加一个 u。例如

widget.setWindowTitle('\u2122')

在 Windows 上,不要尝试将 Unicode 打印到控制台 - 它完全被破坏了。如果必须,请参阅以下允许它的模块:https://github.com/Drekin/win-unicode-console

【讨论】:

  • 是不是也被powershell破坏了?
  • 好吧,一旦我运行了 python3,我就会发现:D
  • @fbence、cmd.exe、powershell.exe、python.exe -- 这些都是与 conhost.exe 托管的控制台窗口对话的控制台程序。 PowerShell 不是终端。有 PowerShell ISE,但 CPython 在该环境中无法正常工作。无论如何,我一般不会在控制台中调用 Unicode 损坏。它在 CPython 尝试使用它的方式上被破坏了(通过 C 运行时 readwrite 使用 ReadFileWriteFile)。 win-unicode-console 使用宽字符 API ReadConsoleWWriteConsoleW;这些工作正常。
  • @eryksun 谢谢,我不知道。我不知何故认为,使用 powershell,windows 世界在终端方面更接近于 linux,但看起来并非如此 :)
  • hmm,今天提醒我为什么要从 windows 切换到 ubuntu :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
相关资源
最近更新 更多