【问题标题】:(python utf-8) using 'à','ç','é','è','ê','ë','î','ô','ù'(python utf-8) 使用 'à','ç','é','è','ê','ë','î','ô','ù'
【发布时间】:2020-05-05 04:51:42
【问题描述】:

我在 python 中遇到重音问题

我写了 # -- coding: utf-8 -- 所以它可以识别重音。 但有时它仍然不起作用。我得到'?当我在收到错误“SyntaxError: Non-ASCII character '\xc3'”后使用它时

为什么?我应该改变什么?谢谢

(不适用于所有字符 'à','ç','é','è','ê','ë','î','ô','ù',"' ","'")

这是我的代码:

# -*- coding: utf-8 -*-

testList = ['à','ç','é','è','ê','ë','î','ô','ù',"‘","’"]

testCharacter = raw_input('test a character : ') # example : é

print(testCharacter) # getting é
print(testCharacter[0]) # getting ? 
print(testCharacter + testCharacter[0]) # getting é?

testCharacterPosition = testList.index(testCharacter) 

print(testCharacterPosition) #getting 2

这是我控制台上的结果:

test a character : é
é
?
é?
2

【问题讨论】:

  • 为什么在 Python 3 中使用 raw_input()
  • 看起来你是个初学者,那你为什么要使用已经报废的 Python 2?

标签: python utf-8 diacritics


【解决方案1】:

看来你还在用python2(你应该考虑改用python3,因为python2已经停产了)。

如果粘贴一些 utf8 字符串,它会被编码,因此由多个字符组成,例如:

>>> s = 'à'
>>> s
'\xc3\xa0'
>>> s[0]
'\xc3'

当然这会打印一个问号,因为单独一个并不能构成完整的字符:

>>> print(s + s[0])
à�

您可以将其转换为 unicode 字符串,然后由一个字符组成:

>>> s.decode('utf-8')
u'\xe0'
>>> print(s.decode('utf-8'))
à

在 py2 中直接使用 unicode 字符串可以绕过解码:

>>> s = u'à'
>>> s
u'\xe0'

最好使用python3,它将整个事情简化为:

>>> s = 'à'
>>> s
'à'
>>>

【讨论】:

    猜你喜欢
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 1970-01-01
    • 2015-02-11
    • 2019-03-08
    • 2018-08-28
    相关资源
    最近更新 更多