Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Python] filnavne med æøå

0 views
Skip to first unread message

Ole Jensen

unread,
Aug 27, 2004, 8:11:39 AM8/27/04
to
Hej NG
Jeg lagt mærke til at programmeringssproget Python er blevet nævnt en del
her, så jeg håber I kan hjælpe mig, med hvad man kan kalde et reigonalt
problem.

Hvis jeg åbner python.exe og laver en fil i stil med:

>>> f = open("æøå.txt", "w")
>>>f.close()

Så kommer filen til at hedde: '>?.txt
Hvis jeg skrev nøjagtigt det samme ind i en IDLE session ville filen jeg
lavede komme til at hedde det den skulle, altså æøå.txt.

Jeg er en relativ newbee til programmering så jeg ved ikke så meget om
unicode og encodning og decodning af de foskellige alfabeter, men dette er
hvad jeg har forsøgt mig med til at løse problemmet:

>>> s = raw_input().decode('latin-1')
æøå
>>> s
u'\x91\x9b\x86'
>>> print s # virker ikke
Traceback (moste recent call last):
File "<stdin>", line 1, in ?
File "D:\Python23\lib\encodings\cp850.py", line 18, in encode
reurn codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-2:
charactermaps to <undefined>
>>> f = open(s, "w")
>>> f.close()
>>> # Dette lavede en fil der hed: [] [] [] (tre firkanter)
>>> t = s.encode('latin-1')
>>> t
'\x91\x9b\x86'
>>> # Nu er det ikke længere unicode
>>> print t
æøå
>>> # Nu kunne jeg printe tegnene rigtigt så var jeg /sikker/ (=troede) på
at det virkede!
>>> f = open(t, "w")
>>> f.close()
>>> # Men nej det lavede bare den fil: '>?


Jeg har allerede spurgt på Pythons Tutor liste
(http://mail.python.org/pipermail/tutor/2004-August/031551.html), men det er
mest engelsk sprogede personer der hører til der, så nu jeg håbede på at en
dansker måtte have nogen mere konkrete erfaringer på området

På forhånd tak
Hilsen Ole.


Martin Christensen

unread,
Aug 28, 2004, 12:35:53 PM8/28/04
to
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

"Ole Jensen" <ole_jensen[remove]@dbmail.dk> writes:

> Hvis jeg åbner python.exe og laver en fil i stil med:
>
>>>> f = open("æøå.txt", "w")
>>>>f.close()
>
> Så kommer filen til at hedde: '>?.txt
> Hvis jeg skrev nøjagtigt det samme ind i en IDLE session ville filen
> jeg lavede komme til at hedde det den skulle, altså æøå.txt.

Det lugter af, at der ikke bruges samme encoding i det terminalprogram
(sikkert cmd.exe), der anvendes, som når du bruger IDLE. Hvis du kan
ændre terminalprogrammets opsætning, således at det bruger Unicode,
kan du måske undgå problemet. Jeg har desværre ikke andre forslag, men
nu er jeg heller ikke ekspert, når det kommer til netop den slags
problemer.

Martin

- --
Homepage: http://www.cs.auc.dk/~factotum/
GPG public key: http://www.cs.auc.dk/~factotum/gpgkey.txt
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
Comment: Using Mailcrypt+GnuPG <http://www.gnupg.org>

iEYEARECAAYFAkEwtGkACgkQYu1fMmOQldVBogCg5/a1abA3K5oBGreV4GVbWv3D
msIAn1U+wY6TXMwaQE/j2+qh7sP+zboV
=BtAM
-----END PGP SIGNATURE-----

Anders J. Munch

unread,
Aug 29, 2004, 4:00:42 PM8/29/04
to
"Ole Jensen" <ole_jensen[remove]@dbmail.dk> skrev:

> Hej NG
> Jeg lagt mærke til at programmeringssproget Python er blevet nævnt en del
> her, så jeg håber I kan hjælpe mig, med hvad man kan kalde et reigonalt
> problem.
>
> Hvis jeg åbner python.exe og laver en fil i stil med:
>
> >>> f = open("æøå.txt", "w")
> >>>f.close()
>
> Så kommer filen til at hedde: '>?.txt

Prøv:
# -*- encoding: latin-1 -*-
f = open(u"æøå.txt", "w")

Kommentaren skal stå i første eller anden linie af programfilen.

> Hvis jeg skrev nøjagtigt det samme ind i en IDLE session ville filen jeg
> lavede komme til at hedde det den skulle, altså æøå.txt.
>
> Jeg er en relativ newbee til programmering så jeg ved ikke så meget om
> unicode og encodning og decodning af de foskellige alfabeter, men dette er
> hvad jeg har forsøgt mig med til at løse problemmet:

Godt forsøg! Jeg tror faktisk du har fat i den lange ende, men bliver
snydt af at MS Windows bruger forskellige indkodninger forskellige
steder: Latin-1 for GUI programmer, og CP850 for konsol-apps.

Forvirringen opstår (som Martin også siger) ved at din teksteditor
formentlig bruger Latin-1, og dine programmer formentlig bliver udført
i en cp850 konsol (cmd.exe).

>
> >>> s = raw_input().decode('latin-1')

Prøv med:
s = raw_input().decode('cp850')

mvh. Anders


Ole Jensen

unread,
Aug 29, 2004, 4:42:00 PM8/29/04
to

"Anders J. Munch" skrev i en meddelelse

>
> Prøv:
> # -*- encoding: latin-1 -*-
> f = open(u"æøå.txt", "w")
>
> Kommentaren skal stå i første eller anden linie af programfilen.

I mit script har > # -*- encoding: latin-1 -*- < I den første linje men jeg
skulle måske prøve at skrive cp850 i stedet for?

> Godt forsøg! Jeg tror faktisk du har fat i den lange ende, men bliver
> snydt af at MS Windows bruger forskellige indkodninger forskellige
> steder: Latin-1 for GUI programmer, og CP850 for konsol-apps.
>

Ja det var jeg ihvertfald ikke klar over! Det er vel også sådan en ting man
bare skal vide, men nu ved jeg det :-)

> Forvirringen opstår (som Martin også siger) ved at din teksteditor
> formentlig bruger Latin-1, og dine programmer formentlig bliver udført
> i en cp850 konsol (cmd.exe).
>
> >
> > >>> s = raw_input().decode('latin-1')
>
> Prøv med:
> s = raw_input().decode('cp850')
>

Lige i øjet du! nu gører det som det skal, Rigtig mange tak for hjælpen.


0 new messages