相关疑难解决方法(0)

Python:从ISO-8859-1/latin1转换为UTF-8

我有这个字符串已经使用电子邮件模块从Quoted-printable解码为ISO-8859-1.这给了我像"\ xC4pple"这样的字符串,它们对应于"Äpple"(Apple中的瑞典语).但是,我无法将这些字符串转换为UTF-8.

>>> apple = "\xC4pple"
>>> apple
'\xc4pple'
>>> apple.encode("UTF-8")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 0: ordinal not in     range(128)
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

python character-encoding

81
推荐指数
4
解决办法
16万
查看次数

Python:当我使用grep时的UnicodeEncodeError

我使用一个简单的python脚本来获取我的CID的预订结果 simple.py:

data = {"minorRev":"current minorRev #","cid":"xxx","apiKey":"xxx","customerIpAddress":"  ","creationDateStart":"03/31/2013","}

url = 'http://someservice/services/rs/'                      
req = requests.get(url,params=data)                        
print req                                                                 
print req.text                                                                
print req.status_code
Run Code Online (Sandbox Code Playgroud)

现在在命令提示符下,如果我这样做python simple.py运行完美并打印req.text变量

但是,当我尝试做的时候
simple.py

我明白了
python simple.py

python grep python-requests

10
推荐指数
2
解决办法
3894
查看次数

latin-1 vs python中的unicode

我在SO上阅读这篇评分很高的帖子unicodes

这是给出的一个插图:

$ python

>>> import sys

>>> print sys.stdout.encoding
UTF-8

>>> print '\xe9' # (1)
é
>>> print u'\xe9' # (2)
é
>>> print u'\xe9'.encode('latin-1') # (3)
é
>>>
Run Code Online (Sandbox Code Playgroud)

并且解释如下

(1)python按原样输出二进制字符串,终端接收它并尝试将其值与latin-1字符映射匹配.在latin-1中,0xe9或233产生字符"é",这就是终端显示的内容.

我的问题是:为什么终端匹配拉丁-1字符映射时encoding'UTF-8'

当我试过的时候

>>> print '\xe9'
?
>>> print u'\xe9'
é
Run Code Online (Sandbox Code Playgroud)

我得到的第一个结果与上面描述的结果不同.为什么会出现这种差异latin-1?在这张照片中会发生什么?

python unicode utf-8 latin1

6
推荐指数
1
解决办法
2384
查看次数

Python对shell字符串的处理

我仍然不完全理解python的unicode和str类型是如何工作的.注意:我在Python 2中工作,据我所知,Python 3对同一问题有完全不同的方法.

我所知道的:

str 是一种较老的野兽,可以保存由历史迫使我们使用的太多编码之一编码的字符串.

unicode 是一种更标准化的方式来表示字符串使用一个巨大的表格,包括所有可能的字符,表情符号,狗屎的小图片等等.

decode函数将字符串转换为unicode,反之亦然encode.

如果我,在python的shell中,只需说:

>>> my_string = "some string"
Run Code Online (Sandbox Code Playgroud)

然后my_string是一个str编码的变量ascii(并且,因为ascii是utf-8的子集,它也被编码utf-8).

因此,例如,我可以unicode通过说出其中一行来将其转换为变量:

>>> my_string.decode('ascii')
u'some string'  
>>> my_string.decode('utf-8')
u'some string'  
Run Code Online (Sandbox Code Playgroud)

我不知道的是:

Python如何处理在shell中传递的非ascii字符串,并且知道这一点,保存单词的正确方法是"kožuš?ek"什么?

例如,我可以说

>>> s1 = 'kožuš?ek'
Run Code Online (Sandbox Code Playgroud)

在这种情况下s1成为str我无法转换为的实例unicode:

>>> s1='kožuš?ek'
>>> s1
'ko\x9eu\x9a\xe8ek'
>>> print s1
kožuš?ek
>>> s1.decode('ascii')

Traceback (most recent call last):
  File "<pyshell#23>", line 1, in <module>
    s1.decode('ascii') …
Run Code Online (Sandbox Code Playgroud)

string unicode encoding utf-8 python-2.x

4
推荐指数
1
解决办法
896
查看次数

Python默认字符串编码

Python 何时、何地以及如何将编码隐式应用于字符串或进行隐式转码(转换)?

那些“默认”(即隐含)编码是什么?

例如,什么是编码:

python character-encoding python-2.x python-3.x python-unicode

4
推荐指数
1
解决办法
6077
查看次数