Python karakterkódolás (utf-8) probléma. Mit csináljak?
Az lenne a problémám, hogy ha a python scriptem elején megadom azt, hogy:
# coding=utf-8
Akkor az ékezetes karakterek furán néznek ki. Példa:
def menu():
print 'Menü:\n\n[S]tart\n[K]ilépés'
valasztas = (raw_input(">>>"))
if valasztas=="S":
start()
if valasztas=="K":
kilep()
És így néz ki, ha kipróbálom:
MenĂĽ:
[S]tart
[K]ilĂpĂs
Mit csináljak?
#!/usr/bin/python
# -*- coding: UTF-8 -*-
másrészt ne magába a script fájlba írd be az ékezeteket, hanem külső fájlból olvasd be a szövegeket egy dictionaryba, majd úgy irasd ki.
#1: Nem működik, ugyanolyan karaktereket kapok.
#2: Latin-1-re, latin-2-re ezt írja ki: "Invalid encoding: 'Latin-1' Saving as UTF-8"
#3,4: Windowst használok, és a cp-1250-re is "Invalid encoding"-et ír ki.
Végső megoldásként esetleg állj át Python 3-ra, ott kijavítottak minden ilyen karakterkódolási gebulát.
Annyi a különbség a két nyelv közt, hogy Python 3-ban a print is függvény, tehát
print "Hello World!" így néz ki:
print("Hello World!")
illetve ami nekem még problémát okozott, hogy Tkinter modult ehelyett:
import Tkinter
így kell importálni:
import tkinter
De ezen kívül minden más kb ugyanaz a végeredmény tekintetében.
Ja, még ha lekéred egy szótár kulcsait: szotar.keys()
akkor valami fura adatot kapsz, amit listává kell alakítani, hogy ugyanazt kapd, mint P2-ben:
list(szotar.keys())
Szerintem nagyon jól tetted, hogy átálltál 3-asra, mert sokkal jobb, már ezért megérte elrontani a kódot! :-)
2.x-ben egyébként
print 'Menü:\n\n[S]tart\n[K]ilépés' helyett
print u'Menü:\n\n[S]tart\n[K]ilépés'
kell. Vagyis az ékezetes betűt tartalmazó szövegek elé egy u betűt kell írni. De a legjobb mindenhova, hogy ha később beleírsz, ne kelljen foglalkozni vele.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!