gpt4 book ai didi

python - 丢失编码( shell 和重音)

转载 作者:太空狗 更新时间:2023-10-30 01:30:14 24 4
gpt4 key购买 nike

我在编码方面遇到了问题。我正在使用版本

Python 2.7.2+ (default, Oct 4 2011, 20:03:08) [GCC 4.6.1] on linux2

我有带有 é à 等重音符号的字符。我的脚本使用 utf-8 编码

#!/usr/bin/python
# -*- coding: utf-8 -*-

用户可以使用 raw_input() 和 .

键入字符串
def rlinput(prompt, prefill=''):
readline.set_startup_hook(lambda: readline.insert_text( prefill))
try:
return raw_input(prompt)
finally:
readline.set_startup_hook()

在主循环中调用“伪”shell

while to_continue : 
to_continue, feedback = action( unicode(rlinput(u'todo > '),'utf-8') )
os.system('clear')
print T, u"\n" + feedback

数据以 pickle 的形式存储在文件中。

我设法让应用程序正常运行,但最终得到了一些愚蠢的东西,比如

核心文件:

class Task()
...
def __str__(self):
r = (u"OK" if self._done else u"A faire").ljust(8) + self.getDesc()
return r.encode('utf-8')

在 shell 文件中也是如此:

feedback = jaune + str(t).decode('utf-8') + vert + u" supprimée"

这就是我意识到我在编码/解码方面可能完全错误的地方。所以我尝试直接在 rlinput 中解码但失败了。我在 stackoverflow 中阅读了一些帖子,重新阅读了 http://docs.python.org/library/codecs.html等待我的 python 书,我迷路了 :/

我猜有很多错误的代码,但我这里的问题只与编码问题有关。你可以在这里找到代码:(大多数评论都是法语的,抱歉,这是供个人使用的,我是初学者,你还需要 yapsy - http://yapsy.sourceforge.net/)(然后配置路径,然后在 py_todo 中:./todo_shell.py ) : http://bit.ly/rzp9Jm

最佳答案

在所有 Unix 系统上,标准输入和输出都是基于字节的。这就是为什么您必须调用 unicode 函数来为它们获取字符串的原因。解码错误表明传入的字节不是有效的 UTF-8。

问题基本上是UTF-8编码的假设,不能保证。通过将 unicode 调用中的编码更改为 'ISO-8859-1' 或将终端仿真器的字符编码更改为 UTF-8 来确认这一点。 (Putty 在“翻译”菜单中支持这一点。)

如果上述实验证实了这一点,您的挑战是支持用户的语言环境并推断出正确的编码,或者可能让用户在命令行参数或配置中声明编码。 $LANG 环境变量是您在没有显式声明的情况下可以做的最好的事情,我发现它不能很好地指示所需的字符编码。

关于python - 丢失编码( shell 和重音),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7992648/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com