Java týden Body zdarma
Využij podzimních slev a získej od nás až 40 % bodů zdarma! Více zde
Pouze tento týden sleva až 80 % na Java e-learning!

Diskuze: Kodování utf-8

Aktivity (2)
Avatar
Lukáš
Redaktor
Avatar
Lukáš:25.2.2018 23:43

Ahoj, nemohu nastavit správné kodování pro python soubor, používám VS Code a kodování ve VS Code mám UTF-8. Mohli by jste mi někdo poradit prosím? :-)

Kod:
# -- coding: utf-8 --
print("Kalkulač­ka\n")
first_num = int(input("Zadejte první číslo: "))
second_num = int(input("Zadejte druhé číslo: "))
print("Jejich součet je:", first_num + second_num)
print("Jejich rozdíl je:", first_num - second_num)
print("Jejich součin je:", first_num * second_num)
print("Jejich podíl je:", first_num / second_num)
input("\nStiskněte libovolnou klávesu...")

Error:
[Running] python "c:\Users\boho\Des­ktop\LastTime­.py"
Traceback (most recent call last):
File "c:\Users\boho\Des­ktop\LastTime­.py", line 2, in <module>
print("Kalkula\u010dka\n­")
File "C:\Program Files\Python364\lib\en­codings\cp1252­.py", line 19, in encode
return codecs.charmap_en­code(input,sel­f.errors,enco­ding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u010d' in position 7: character maps to <undefined>

[Done] exited with code=1 in 0.122 seconds

Editováno 25.2.2018 23:44
 
Odpovědět 25.2.2018 23:43
Avatar
Erik Šťastný:26.2.2018 10:30

Python 3.5.4

Kalkulačka

Zadejte první číslo: 20
Zadejte druhé číslo: 20
Jejich součet je: 40
Jejich rozdíl je: 0
Jejich součin je: 400
Jejich podíl je: 1.0

Stiskněte libovolnou klávesu...

Těžko se to reprodukuje, když to zkopíruju bere mi to automaticky jako UTF-8
nicméně podle tohodle defining-the-encoding nevypadá, že to co máš na prvním řádku je validní zápis :)

Otázka taky je v jakém kódování soubor opravdu fyzicky je, doporučuju notepad++ např :)

Editováno 26.2.2018 10:31
 
Nahoru Odpovědět 26.2.2018 10:30
Avatar
Lukáš
Redaktor
Avatar
Odpovídá na Erik Šťastný
Lukáš:26.2.2018 16:00

No chtěl jsem nějaký editor, aby mi zvýraznil syntaxi a i upozorňoval na syntax errory, tak jsem si myslel, že VS code bude ideální.
Jinak soubor je fyzicky v utf-8 kodování, teď jsem to otevřel v PSPadu a tam to ukazuje utf-8.

 
Nahoru Odpovědět 26.2.2018 16:00
Avatar
Odpovídá na Lukáš
Erik Šťastný:26.2.2018 16:06

Divné, používám Python denně všecny soubory mám UTF-8 a nikde to neuvádím v hlavičce a verze 3.5.4 i 3.6.3 funguje bez problému.

Co když to spustíš mimo VS Code?

Editováno 26.2.2018 16:07
 
Nahoru Odpovědět 26.2.2018 16:06
Avatar
Lukáš
Redaktor
Avatar
Odpovídá na Erik Šťastný
Lukáš:26.2.2018 16:07

A používáš také VS Code?

 
Nahoru Odpovědět 26.2.2018 16:07
Avatar
Odpovídá na Lukáš
Erik Šťastný:26.2.2018 16:09

Nene, mám podezření, že VS Code se snaží nějak podrstrčit Pythonu, že jde o kódování cp1252, když se podíváš do stack trace.

Hádám, že když to spustíš mimo VS Code, tak to bude normálně fungovat ne?

Editováno 26.2.2018 16:09
 
Nahoru Odpovědět 26.2.2018 16:09
Avatar
Lukáš
Redaktor
Avatar
Odpovídá na Erik Šťastný
Lukáš:26.2.2018 16:37

Ano máš pravdu, když to spustím mimo VS Code, tak se to spustí normálně a žádný problém nenastane.
Ted nevím, co myslíš tím, abych se podíval do stack trace.

 
Nahoru Odpovědět 26.2.2018 16:37
Avatar
Odpovídá na Lukáš
Erik Šťastný:26.2.2018 16:40

Promiň myslel jsem ten error...

[Running] python "c:\Users\boho\Des­ktop\LastTime­.py"
Traceback (most recent call last):
File "c:\Users\boho\Des­ktop\LastTime­.py", line 2, in <module>
print("Kalkula\u010dka\n­")
File "C:\Program Files\Python364\lib\en­codings\ cp1252.py", line 19, in encode
return codecs.charmap_en­code(input,sel­f.errors,enco­ding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u010d' in position 7: character maps to <undefined>

Každopádně co s tím? nějaké nastavení VS Code s kódováním souborů?

Editováno 26.2.2018 16:41
 
Nahoru Odpovědět 26.2.2018 16:40
Avatar
Lukáš
Redaktor
Avatar
Odpovídá na Erik Šťastný
Lukáš:26.2.2018 16:48

To jsem si myslel také, nicméně mám nastaveno

// The default character set encoding to use when reading and writing files. This setting can be configured per language too.
"files.encoding": "utf8"

A kodování viz. obrázek také na utf8

 
Nahoru Odpovědět 26.2.2018 16:48
Avatar
Odpovídá na Lukáš
Erik Šťastný:26.2.2018 16:50

Divné, to ti bohužel neporadím :/ Používám PyCharm

 
Nahoru Odpovědět 26.2.2018 16:50
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Lukáš
Redaktor
Avatar
Odpovídá na Erik Šťastný
Lukáš:26.2.2018 16:55

A je to vhodné pro začátečníka? Právě mi přišlo to VS Code jako takové user-friendly. Ale když nefunguje, z neznámého důvodu, tak asi budu muset najít něco jiného.

 
Nahoru Odpovědět 26.2.2018 16:55
Avatar
Odpovídá na Lukáš
Erik Šťastný:26.2.2018 16:59

Třeba ti tu ještě někdo poradí :)

Asi proč ne, osobně v tom moc nevidím rozdíl, textovej editor, kterej ti umožní program debuggovat, nevím co víc posuzovat no, osobně taky tak 80% jeho funkcí nepoužívám a nějak mě to netrápí.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 26.2.2018 16:59
Avatar
Odpovídá na Lukáš
Jiří Gavenda:26.2.2018 18:11

S Pythonem taky začínám a používám PyCharm. Community verze je plně zdarma, takže proč to nezkusit. A stejně jako Elisse většinu funkcí nepoužívám, určitě ještě víc než 80 %.

Nahoru Odpovědět 26.2.2018 18:11
"Kdybychom byli bez chyb, nezpůsobilo by nám takovou radost odhalovat chyby druhých. " - Francois de la Roc...
Avatar
Lukáš
Redaktor
Avatar
Odpovídá na Jiří Gavenda
Lukáš:26.2.2018 20:05

Dobrá, tak já se teda podívám na ten PyCharm, díky za radu.

 
Nahoru Odpovědět 26.2.2018 20:05
Avatar
Lukáš
Redaktor
Avatar
Odpovídá na Erik Šťastný
Lukáš:26.2.2018 20:05

Tobě také velké díky, za snahu pomoci, dávám teda téma jako vyřešené.

 
Nahoru Odpovědět 26.2.2018 20:05
Avatar
Petr Vavřinec:24. května 13:42

Zdravím. Řeším asi podobný problém, ale s Notepad++... Kódování souboru je v Notepad++ označeno jako UTF-8 bez BOM (ale je jedno, když provedu konverzi na s BOM, chová se to stejně). Spustím to do konzoli, kterou poskytuje Notepad++ (???) a ačkoli to napíše, že prostředí je utf-8, ten řetězec prostě není :-(
Když ale ten samý soubor otevřu v IDLE (zobrazí se správně) a spustím ho s výstupem do konzole, kterou používá IDLE (okno Shell), tak se to zobrazí správně.
Zrovna tak, když to spustím přímo v příkazovém řádku (Win10 -> cmd) tak se to zobrazí správně.
Tuší někdo, jak donutit Notepad++ buď aby spouštěl jako výstup jinou konzoli, nebo udělal něco jiného, aby se to zobrazovalo správně?

 
Nahoru Odpovědět 24. května 13:42
Avatar
r.glockner
Člen
Avatar
Odpovídá na Petr Vavřinec
r.glockner:29. září 11:11

Ahoj Petře, narazil jsem na stejný problém u Notepad++, ale vyřešil jsem to takto: Pluginy, NppExec, Console Outpu...{ANSI/UT­F8}, tady jsem nastavil: - dle obrázku, uložil a už mi to jede i v Češtině.

Editováno 29. září 11:13
 
Nahoru Odpovědět 29. září 11:11
Avatar
r.glockner
Člen
Avatar
Odpovídá na r.glockner
r.glockner:29. září 11:15

Tak oprava, nastavení musí být u obou na ANSI (Windows), aby ti fungovaly správně i vstupy.
Takže konečné nastavení je takovéto:

 
Nahoru Odpovědět 29. září 11:15
Avatar
Odpovídá na r.glockner
Petr Vavřinec:1. října 9:30

Ahoj. Díky za radu. Takže rychlá rekapitulace:

  • Nastavím si Pluginy -> NppExec -> Console Output na {ANSI/ANSI}
  • U nového .py souboru nastavím Formát -> Změnit kódování na UTF-8
  • Napíšu kód v pythonu s českými znaky v řetězcích
  • Po exekuci pomocí F6 jsou v konzoli opravdu české znaky

Děkuji za pomoc.

Ještě jsem začal zkoušet VSCode kvůli IntelliSense. Taky to má nějaké zádrhele ohledně chybových hlášek, ale to budu řešit, až vyzkouším všechny nápovědy z Internetu.

 
Nahoru Odpovědět 1. října 9:30
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 19 zpráv z 19.