使用Python计算UTF8字符

时间:2015-10-23 18:21:49

标签: python utf-8

我一直在为我的学生准备一个简单的Python脚本示例,我发现很难解决以下问题。 我正在使用utf8编码,因为我希望他们使用波兰语字符,例如 Ł,±,ś。现在,该脚本应该从用户获取名称并打印它 在由*制成的矩形中。所以这就是我想要向他们展示的内容:

imie=raw_input('Podaj swoje imię: ') #Give your name

dl=len(imie)

print '*'*(dl + 4)
print '*' + ' '*(dl + 2) + '*'
print '* ' + imie + ' *'
print '*' + ' '*(dl + 2) + '*'
print '*'*(dl + 4)

问题是,对于诸如Antoś Mąka之类的名称,dl变量值应为11,但它是13,因为ś和±符号计算为2。 是否可以强制len()函数将其计算为1?

3 个答案:

答案 0 :(得分:1)

在Python 2. *中使用decode

dl=len(imie.decode("utf-8"))

答案 1 :(得分:1)

将utf8中的数据解码为unicode对象。然后获取unicode的len。

imie=raw_input('Podaj swoje imię: ').decode('utf8') #Give your name
dl=len(imie)
print dl

答案 2 :(得分:0)

当您使用str

时,您正在使用unicode
imie = unicode(raw_input('....').decode('utf-8'))