1

据我所知,这些在使用 UTF-8 作为默认编码的系统中应该是等效的:

pattern1 = 'Wörterbuch Wortformen'.decode('utf8')
pattern2 = u'Wörterbuch Wortformen'

但是,当我将这些行从 Emacs 缓冲区发送到 Python 进程 ( M-x python-shell-send-region) 时,会发生一些奇怪的事情。

>>> pattern1
u'W\xf6rterbuch Wortformen'
>>> pattern2
u'W\xc3\xb6rterbuch Wortformen'

在终端中运行的 Python shell 中,两行的结果都是u'W\xf6rterbuch Wortformen'.

这里发生了什么?

我的语言环境配置为使用 UTF-8。

4

2 回答 2

1

这是我所做的(以后可能会有所帮助):

  1. 创建了一个单比特编码文件,比如/tmp/test.dat在 Emacs 中使用hexl-mode.

  2. 使用hexl-insert-hex-char命令插入字节C3B6.

  3. 将此文件作为文本打开(使用text-mode)。Emacs 将其识别为具有多字节编码的文件,并ö代替之前的字节显示。


结论:您需要缓冲区中包含utf-8要发送两个字节的源代码的编码系统ö。但是,如果它是单字节编码,并且假设您选择了将字节映射到的语言环境F6ö您将获得该字节。

PS。确保你有-*- coding: utf-8 -*-评论。

于 2013-10-29T08:38:00.837 回答
1

事实证明,python.el.

于 2013-10-29T20:34:16.187 回答