IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Lukáš
Tvůrce
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áš
Tvůrce
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áš
Tvůrce
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áš
Tvůrce
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áš
Tvůrce
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
Avatar
Lukáš
Tvůrce
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í
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
26.2.2018 16:59
Avatar
Aaa Aaa
Člen
Avatar
Odpovídá na Lukáš
Aaa Aaa: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
Avatar
Lukáš
Tvůrce
Avatar
Odpovídá na Aaa Aaa
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áš
Tvůrce
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.5.2019 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.5.2019 13:42
Avatar

Člen
Avatar
Odpovídá na Petr Vavřinec
:29.9.2019 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.9.2019 11:13
 
Nahoru Odpovědět
29.9.2019 11:11
Avatar

Člen
Avatar
Odpovídá na
:29.9.2019 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.9.2019 11:15
Avatar
Odpovídá na
Petr Vavřinec:1.10.2019 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.10.2019 9:30
Avatar
Petra Kleislová:7.4.2023 19:05

Ahoj, unicode má více než 100.000 znaků očíslovaných čísly. Potřebovala bych zjistit číslo jakéhokoliv znaku, na který v textu narazím (třeba æ). Vždyť prohlížeč nebo textový editor musí "vědět" kolikátý znak unicode to je, ne?

 
Nahoru Odpovědět
7.4.2023 19:05
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:10.4.2023 20:23

Pozn.: Priste zaloz vlastni tema, nepis do tematu nekoho jineho.
Pozn.: Jestli to potrebujes online, tak (slova pro google)

google = decode unicode character online
https://www.online-toolz.com/…onvertor.php

æ = %E6

google = decode unicode character online ord
https://checkserp.com/encode/utf8/

æ = ascii &#230; | unicode \u00e6 | utf-8 \u00e6 | urlencode %c3%a6

google = character online ord
https://www.functions-online.com/ord.html

195 dec (coz je C3 hexa)
 
Nahoru Odpovědět
10.4.2023 20:23
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 22 zpráv z 22.