鱼C论坛

 找回密码
 立即注册
查看: 4969|回复: 2

[已解决]mac下的 idle为何不能输入中文?该如何解决?

[复制链接]
发表于 2017-7-14 09:00:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
mac下的 idle为何不能输入中文? 该如何解决?
最佳答案
2017-7-14 11:03:50
鉴于国内可能无法下载,这里提供下 Tcl/Tk 备胎版下载 -> 链接:http://pan.baidu.com/s/1eS1SyUA 密码:btm0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-7-14 09:36:56 | 显示全部楼层
作者:知乎用户
链接:https://www.zhihu.com/question/26532408/answer/37333098
来源:知乎


Mac 系统下的 IDLE 不能输入中文有两种情况:第一种情况是在 IDLE 下中文输入法失效,无法显示出中文输入法的选词框。在这种情况下打开 IDLE 时会显示一段警告:"WARNING: The version of Tcl/Tk (8.5.9) in use may be unstable."<img src="https://pic3.zhimg.com/265fc4f59867ec7c2291307b525c4142_b.png" data-rawwidth="529" data-rawheight="29" class="origin_image zh-lightbox-thumb" width="529" data-original="https://pic3.zhimg.com/265fc4f59867ec7c2291307b525c4142_r.png">这是因为 IDLE 界面使用的 Tkinter 图形库需要依赖 Tcl/Tk,而 Mac 系统自带的 Tcl/Tk 版本太低,造成了不兼容的问题。(这是因为 IDLE 界面使用的 Tkinter 图形库需要依赖 Tcl/Tk,而 Mac 系统自带的 Tcl/Tk 版本太低,造成了不兼容的问题。(IDLE and tkinter with Tcl/Tk on Mac OS X)解决方法是下载安装新版本的 Tcl/Tk,下载地址:ActiveTcl Downloads。而如果有使用 Homebrew 的话,可以用 brew install tcl-tk 安装新版本的 Tcl/Tk(如果有用 Homebrew 来安装 Python,可以在安装时加上 --with-tcl-tk 选项来同时安装 Tcl/Tk:brew install python --with-tcl-tk)。第二种情况是在 IDLE 的交互模式里输入中文,会提示 "Unsupported characters in input"。根据 Typing UTF-8 characters in IDLE 所说,这是因为在交互模式下的 IDLE 里输入非 ascii 字符时,IDLE 会根据电脑上的语言环境设置来判断编码,然后用这个编码对输入的非 ascii 字符进行转换后才能运行。测试后发现,不管我把 Mac 系统的语言设置成中文还是英文,在直接运行 IDLE 的时候,这个编码一直是 'us-ascii',并不支持对非 ascii 的中文进行转换,于是就报错了。需要将其更改为 'utf-8' 编码才能支持输入中文。之前我在 StackOverflow 上找到了一个解决方法(python - UnicodeEncodeError with csvwriter),其通过在 IDLE 的源码中插入一行代码来使得 IDLE 在交互模式下使用的编码强制更改为 'utf-8' 。但后来我发现一个更为简单的方法,设置 IDLE 的环境变量 "LANG" 为 "en_US.UTF-8",就能使 IDLE 在交互模式下使用的编码更改为 'utf-8'。更改 IDLE 的环境变量有多个办法,而我采用的方法如下:1.  对 IDLE.app 程序文件右键打开包内内容,打开编辑其中的 IDLE.app/Contents/MacOS/IDLE 文件。2. 在大概第 24 行的 os.environ["PYTHONEXECUTABLE"] = executable 代码上方加入一行代码:os.environ["LANG"] = "en_US.UTF-8"
<img src="https://pic3.zhimg.com/58753ab82af3b7670e89f65cc060ca82_b.png" data-rawwidth="383" data-rawheight="79" class="content_image" width="383">3. 保存文件,重新打开 IDLE 就可以输入中文了。3. 保存文件,重新打开 IDLE 就可以输入中文了。(保存文件时可能会遇到权限问题,可以试下用 Sublime Text 等第三方编辑器来编辑这个文件,保存的时候应该会跳出窗口来让你输入用户密码,然后就能保存成功了。)我原来采用的更改 IDLE 源码的旧方法的步骤如下:1. 首先要找到你电脑上 IDLE 运行的 Python 的自带库的位置,可以通过以下命令获得 os.pyc 的路径,其所在文件夹就是 Python 自带库的位置。import os
print os.__file__
2. 在此路径下找到 idlelib 文件夹,打开其中的 IOBinding.py 文件。在大概第68行的 encoding = encoding.lower() 代码下方加入一行代码:encoding = "utf-8"
<img src="https://pic4.zhimg.com/6f570ad493d0792336638053f6e0364b_b.jpg" data-rawwidth="513" data-rawheight="231" class="origin_image zh-lightbox-thumb" width="513" data-original="https://pic4.zhimg.com/6f570ad493d0792336638053f6e0364b_r.jpg">3. 保存文件,重新打开 IDLE 就可以输入中文了。3. 保存文件,重新打开 IDLE 就可以输入中文了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-14 11:03:50 | 显示全部楼层    本楼为最佳答案   
鉴于国内可能无法下载,这里提供下 Tcl/Tk 备胎版下载 -> 链接:http://pan.baidu.com/s/1eS1SyUA 密码:btm0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 17:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表