我一直在爲我的學生準備一個Python腳本的簡單示例,並且我發現很難解決以下問題。 我使用utf8
編碼,因爲我希望他們使用波蘭字符,例如 Ł,±,ś。現在,該腳本應該從用戶那裏獲取姓名,並將其打印在由*所組成的矩形中 。所以這是我想向他們展示什麼:使用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,因爲S和體徵是作爲兩個計算。 是否可以強制len()
函數將其計算爲1?當你應該使用unicode
imie = unicode(raw_input('....').decode('utf-8'))
python 3沒有這些問題,你在python2中遇到。所有的字符串都是python3中的unicode,而len的工作原理恰到好處。 – LetzerWille