今天更新mercurial的时候遇到了一个问题。
执行hg,结果报错:LookupError: unknown encoding: x-mac-simp-chinese
想到这个问题我以前在用django的时候碰到过,原来以为是django的问题,现在才知道原来是普遍的python的问题。
去hg的源代码里面minirst.py里面看了一下,发现是直接调用mercurial的encoding函数的encoding这个变量。
找到encoding.py里面,
try:
encoding = os.environ.get("HGENCODING")
if not encoding:
encoding = locale.getpreferredencoding() or 'ascii'
encoding = _encodingfixers.get(encoding, lambda: encoding)()
except locale.Error:
encoding = 'ascii'
原来是locale这个模块搞的鬼。。
去locale.py里面看了一下,发现以下代码:
if sys.platform in ('win32', 'darwin', 'mac'):
# On Win32, this will return the ANSI code page
# On the Mac, it should return the system encoding;
# it might return "ascii" instead
def getpreferredencoding(do_setlocale = True):
"""Return the charset that the user is likely using."""
import _locale
return _locale._getdefaultlocale()[1]
尝试执行了一下,直接返回了'x-mac-simp-chinese'
为了了解正确的结果,python2.6 -c 'import locale; print(locale.getpreferredencoding());'返回结果'UTF-8'.
而UTF-8正是我设置的LC_ALL和LANG的结果。
看来是这个_locale模块搞得鬼。不过_locale啊。看名字就是c写的。为了省力。直接把
if sys.platform in ('win32', 'darwin', 'mac'):
改成了
if sys.platform in ('win32'):
然后顺手搜索了一下locale.py中的_locale,把所有的都改了。
执行hg,一切正常。
顺带搜了一下这个问题python的buglist里面有没有,果然看到了。http://bugs.python.org/issue1276。不过略看了一下,发现python2.5.x被无情的忽略了。看来只能自己hack了。:)。
分享到:
相关推荐
全名:python-2.5-macosx.dmg
Python是一种广泛使用的解释型、高级编程、通用型编程语言,由吉多·范罗苏姆创造,第一版发布于1991年。Python是ABC语言的后继者,也可以视之为一种使用传统中缀表达式的LISP方言。Python的设计哲学强调代码的...
python-2.7.8-macosx10.6.dmg
Mac OS的Monterey版本可用的python2.7,官方版本,官方地址:https://www.python.org/ftp/python/2.7.18/python-2.7.18-macosx10.9.pkg,转存于CSDN。
4. 选择安装位置:默认情况下,Python将被安装在 `/usr/local/bin` 目录下,这允许它与系统自带的Python版本共存,不会影响预装的系统库。如果需要自定义安装位置,可在此步骤进行调整。 5. 确认安装:在确认安装...
全名:python-2.7-macosx10.3.dmg
python-3.8.2-macosx10.9安装包!
全名:python-2.7.7-macosx10.5.dmg
总结来说,`vtk-9.0.3-cp39-cp39-macosx_11_0_arm64.whl`是专为Python 3.9和Apple M1芯片的MacOS Big Sur系统设计的VTK库的Python版本,提供了强大的三维可视化功能。开发者可以通过简单的命令快速将其安装到环境中...
全名:python-3.2-macosx10.3.dmg
全名:python-2.6-macosx.dmg
python库。 资源全名:jsonlib-1.3.9-py2.5-macosx-10.3-i386.egg
全名:python-2.7.8-macosx10.5.dmg
资源分类:Python库 所属语言:Python 资源全名:pygr-0.8.0-py2.5-macosx-fink-ppc.egg 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
全名:python-2.7.6-macosx10.3.dmg
全名:python-3.4.0a3-macosx10.6.dmg
【标题】"python-3.7.0-macosx10.9.zip"指的是Python编程语言的3.7.0版本在Mac OS X 10.9(也称为Mavericks)上的安装包的压缩文件。这个文件是为在苹果操作系统上运行Python 3.7.0提供的一种方便的下载和安装方式。...
资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:snappy-2.5-cp36-cp36m-macosx_10_6_intel.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
标题中的"dtw_python-1.1.7-cp36-cp36m-macosx_10_9_x86_64.whl"指的是一个Python库,名为dtw_python,版本号为1.1.7。它是为Python 3.6编译的,并且适用于macOS 10.9及更高版本的64位系统。这个库的安装文件是.whl...