Results 1 to 3 of 3
Thread: Python è encoding
Hybrid View
-
22nd December 2010 03:01 #1
Python è encoding
Òèÿ äíè ïîêðàé ðàçíè òåìè âúâ ôîðóìà ðåøèõ äà ñå çàèãðàÿ ñ Python êàòî öåëòà áåøå íåùî ñðàâíèòåëíî ïðîñòî: äà ñè íàïèøà ïðîãðàì÷å,
êîåòî ïðàâè êàòàëîã íà íàëè÷íàòà ìè ìóçèêà ïî çàäàäåí root folder è ãî ðàçïèñâà âúâ ôàéë.
Çàïî÷íàõ ñ python-2.7.1-x64 (ïîñëåäíèÿò íàëè÷åí Python 2.x) è âñè÷êî áåøå íàðåä, íî ñå îêàçà, ÷å íå âñè÷êè èìåíà íà àëáóìè è
ïåñíè ñà íàïèñàíè íà àíãëèéñêè (ñúäúðæàò íÿêîè çàáàâíè ñèìâîëè êàòî å, á, ü - èíà÷å êàçàíî ISO-8859 ñèìâîëè).
Êîåòî äîâåäå êàòî ðåçóëòàò, ÷å python íå æåëàå äà îáõîæäà ïîäîáíè ïàïêè
(os.path.isfile(x) - False, os.path.isdir(x) - False; os.walk(x) å ñúùàòà ðàáîòà, ïàê ïîëçâà os.listdir(), êàêòî è àç).
Òîãàâà ðåøèõ äà îïèòàì ñ python-3.1.3-x64, çàùîòî ïîääúðæà Unicode out of the box.
Å, äà, ïî÷òè. Òúé êàòî Locale-úò íà OS-òî å Áúëãàðèÿ, python-3.1.3 ñè
çàðåæäà ïî ïîäðàçáèðàíå òàáëè÷êàòà îò ${python}/Lib/encodings/cp1251.py, êúäåòî ãîðåñïîìåíàòèòå
ñèìâîëè ëèïñâàò. Â ðåçóëòàò ãúðìÿ ñ:
 èíòåðíåÄà íå ñà ìíîãî ñëîâîîõîòëèâè ïî âúïðîñà, íÿêîé äàëè èìà èäåÿ êàê ñå ïðåñêà÷à òàçè äóïêà?Code:UnicodeEncodeError: 'charmap' codec can't encode character '\xe5' in position 60: character maps to <undefined>

P.S. Çà ïðîòîêîëà - îïèòàõ è 32bit âåðñèÿòà íà python-3.1.3 è ãúðìè ïî èäåíòè÷åí íà÷èí.
Ñ Java íåùàòà ñòàíàõà êîðåêòíî îò ïúðâèÿ ïúò, íî êîäúò å ïî-äúðâåí
UD3R|Q9550+1283|4x2 G.Skill@1066|MX500+1002FAEX+640AAKS+ST31 60|RX580-8GB|1841BLT|SS-760XP|Define7|z24i|Edifier S350DB
geniusloci: ÀÌÄ ñå êóïóâà à) àêî ñè áåäåí; á) àêî ñà òå èçëúãàëè; â) àêî ñè áîëåí ôåí?
nope|r.i.p.
-
22nd December 2010 04:00 #2
-
22nd December 2010 04:12 #3
Òîâà èçêàçâàíå å ïîäâåæäàùî. Python 2.x ñúùî ïîääúðæà ÷óäåñíî Unicode out of the box. Ïðîñòî òàì òèïúò str å åäíîáàéòîâ, à ïîâå÷åòî õîðà ïîëçâàò íåãî ïî èíåðöèÿ, âìåñòî unicode. Ïðàâèëíî íàïèñàíèòå ïðîãðàìè ñè ðàáîòÿò, ñáúðêàíèòå ãúðìÿò. Òðÿáâà äà âíèìàâàø êàòî ÷åòåø íåùî â êàêúâ åíêîäèíã å, è â êàêúâ òè èñêàø äà ãî ñúõðàíèø. Êîíâåðñèÿ ìåæäó unicode è str ìîæåø äà ïðàâèø ñ ìåòîäèòå encode() è decode(), èëè ïúê ñ êîíñòðóêòîðèòå íà unicode() è str(). Ïðèìåðè:
u'Àëàáàëà'.encode('utf8')
'\xd0\x90\xd0\xbb\xd0\xb0\xd0\xb1\xd0\xb 0\xd0\xbb\xd0\xb0'.decode('utf8')
Íàêðàòêî - áúãàâà òè å ïðîãðàìàòà, îïðàâè ñè ÿ
Èçïîëçâàé ïîäñêàçêèòå êîèòî íàïèñàõ ïî-ãîðå.
Êîéòî ìè öúêíå ÷åðâåí ïàëåö, äà ìó îìåêíå ÷óðêàòà!




Reply With Quote

Lenovo ThinkPad 15 èëè IdeaPad 15
5th May 2023, 22:16 in Ìîáèëíè êîìïþòðè