据我所知,在使用UTF-8作为默认编码的系统中,这些应该是等效的:
pattern1 = 'Wörterbuch Wortformen'.decode('utf8')
pattern2 = u'Wörterbuch Wortformen'
但是,当我将这些行从Emacs缓冲区发送到Python进程(M-x python-shell-send-region
)时,会发生一些奇怪的事情。在
在终端中运行的pythonshell中,这两行结果都是u'W\xf6rterbuch Wortformen'
。在
这是怎么回事?在
我的语言环境配置为使用UTF-8。在
原来它是
python.el
中的bug。在以下是我所做的(以后可能会有所帮助):
创建了一个位编码的文件,比如
/tmp/test.dat
使用hexl-mode
在Emacs中打开它。使用}。
hexl-insert-hex-char
命令插入字节C3
和{以文本形式打开此文件(使用
text-mode
)。Emacs将其识别为具有多字节编码的文件,并显示ö
来代替前面的字节。结论:您需要缓冲区中包含源代码的编码系统为
utf-8
,以便为ö
发送两个字节。但是,如果是单字节编码,并且您选择了将字节F6
映射到ö
的语言环境,那么您将得到该字节。在请确保您有
-*- coding: utf-8 -*-
评论。在相关问题 更多 >
编程相关推荐