Python 程序以不同于英语的语言显示消息

Posted

技术标签:

【中文标题】Python 程序以不同于英语的语言显示消息【英文标题】:Python program displaying messages in different language than english 【发布时间】:2014-01-14 00:05:42 【问题描述】:

我在 2.7.6(32 位)版本中编写了一个简单的 python 程序。但是,当我在消息框中显示任何消息时,它会以某种奇怪的语言出现。代码如下

import Tkinter as tk
import win32com.client
import pythoncom
import ctypes
import sys
import glob
import sys
import os

MessageBox = ctypes.windll.user32.MessageBoxW 

if __name__ == "__main__":
   MessageBox(None, "Hello", 'Window title',0)

这是输出

【问题讨论】:

这是你的完整程序吗? 这是我写的一个示例程序,只是为了显示我的问题 我仍然不确定这是否是我下载的安装程序问题。我下载的网址来自python.org/download/releases/2.7.6 不是安装程序问题;您需要发送一个 unicode 字符串,否则您的正常字符串将被错误地解释。 【参考方案1】:

你需要发送一个 unicode 字符串;因为你使用的是unicode版本的消息框MessageBoxW,如果你想发送普通的ascii字符串你需要使用MessgeBoxA

ctypes.windll.user32.MessageBoxA(None, 'Hello', 'Window title', 0) # or
ctypes.windll.user32.MessageBoxW(None, u'Hello', u'Window title', 0)

【讨论】:

确实有效。但是当我安装 python 3.3 时,我从来没有这样做过。那么这在 2.7 和 3.3 中有什么不同吗?\ 在 Python3 中,all strings are unicode objects 这就是它起作用的原因。 您应该将函数指针的argtypes 设置为使用c_wchar_p。然后你可以调用ctypes.set_conversion_mode('utf-8', 'strict'),或者你喜欢的任何编码,来配置字节字符串到unicode的自动转换。 set_conversion_mode 仅在 2.x ctypes 中。默认转换模式是严格的 ASCII。 “无”代表什么?

以上是关于Python 程序以不同于英语的语言显示消息的主要内容,如果未能解决你的问题,请参考以下文章

使 String.format("%s", arg) 以不同于 "null" 的方式显示空值参数

sql server利用不同语种语言显示报错错误消息的方法示例

UILocalizedIndexedCollat​​ion 区域设置不同于英语

为啥需要以不同于其他 MIME 类型的请求的方式处理多部分请求?

我可以以不同于 root 的用户身份运行 cloud init 吗?

让 Ghostscript 以不同于横向页面的方式处理纵向页面?