aprócska, fontatlan, mégis bosszantó

http://openproject.hu/learn_python/2006-09-18/gerard_swinnen_tanuljunk_…
alapján tanulom a python nyelvet, még az elején tartok.

Az egyik feladat arról szólt, hogy írni kell egy szkriptet, ami egy új változóba fordított sorrendben másolja át egy karakterlánc karaktereit.

Nem okozott különösebb problémát, csak a végeredmény, ugyanis ha kiíratom az eredeti szöveget, abban jól jelennek meg az ékezetes betűk, viszont a fordítottjában, kérdőjelek jelennek meg, ékezetes karakterenként kettő.

Az operációs rendszerem van rosszul beállítva, vagy a python-ban csinálok valamit rosszul?

A szkript:
# -*- coding:Utf-8 -*-
ekl = "rómaifővezér"
eklh =len(ekl)
n=eklh-1
ukl = ""
while n >= 0:
ukl = ukl+ekl[n]
n = n-1
print ekl
print ukl

Az eredménye:
rómaifővezér
r��zev��fiam��r

Az operációs rendszer:
Kubuntu 7.1, Python 2.5.1

Hozzászólások

1. A kodot tedd [ code ] [ / code] koze (space nelkul).
2. Az UTF8 byte-ok sorrendjet is megforditod, karakteren belul. karakter!=byte

----
Sooner or later you had to talk, even if it was only because you'd run out of things to throw. - Pratchett
honlap készítés

>>> s = u"öüóőúéáűí"
>>> print s[::-1]
íűáéúőóüö
>>>

Én valami ilyesmi kódot javaslok:


# -*- coding:Utf-8 -*-
ekl = "rómaifővezér"
eklh =len(ekl)
n=eklh-1
ukl = ""
while n >= 0:
    if ekl[n] <= 'z':
        ukl = ukl+ekl[n]
    else:
        ukl = ukl+ekl[n-1]
        ukl = ukl+ekl[n]
        n = n - 1
    n = n-1
print ekl
print ukl

Az ékezetes karaktereket az utf-8 két bájton tárolja, ezért, ha azt megfordítod értelmetlen jelek jelennek meg a képernyőn. Az én progim, nem fordítja meg az ékezetes karakterek kódjait.

ittvan vegre az unicode ideje akkor mar ne ganyoljuk ossze!
az utf-8 1,2 es 3 byte on is tarolhat ertekeket
(lehet 4-en is)

feltételezni hogy max 2 ugyanolyan szuklatokoruseg mint az emcsiknak az hogy nem foglalkoztak az ekezetekkel