Diskuze: České znaky v console arguments
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
No, moc ne. Jde o to, že uložený batch v Unicode nefunguje. V jiných
znakových sadách program přečte nesmyslnou cestu, po čemž použije tu
výchozí. Koukal jsem na třídu Encoding, ale ta nejde použít na cestu k
souboru
Tady je vlákno o tom - vypadá to, že CMD - batch je jeden velký bugfest, anebo to prostě není implementované. Vyřešil bych to nějak jinak, třeba vedle programu si dal txt soubor, kde budou ty jména složek a souborů, které chceš zpracovat. Tvoje .exe to pak přečte
Tak pro shrnutí - řešení bylo na dané adrese k nalezení. Protože
aplikaci spouštíte pod windows, kde si přirozeně jako Češi nastavíte
české kódování, jsou tyto znaky ve výchozím nastavení systému brány ze
sady Windows-1250, ve které čte i náš c# program. V Batchi nastavujete
znakovou sadu příkazem chcp.
Finální batch má tedy následující podobu:
@echo off
chcp 1250
start C:\Users\Kája\Documents\Texty\
exit
V jiných editorech české znaky v .cmd i .bat souborech fungovaly na
spuštění .jar souboru.
Výstup z Eclipse IDE for Java Developers - 2025-06 s tím zatím bojuji.
Nadějně vypadá tohle, ale chce to doladit.
Má někdo stejnou polemiku?
.cmd soubor:
@ECHO OFF
color df
SET ROOT_KEY="HKEY_LOCAL_MACHINE"
FOR /f "skip=2 tokens=3" %%i in ('reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage /v OEMCP') do set OEMCP=%%i
ECHO System default values / Vychozi hodnoty systemu:
ECHO.
ECHO ...............................................
ECHO Select Codepage / Vyberte kodovani stranky:
ECHO ...............................................
ECHO.
ECHO 1 - CP1252
ECHO 2 - UTF-8
ECHO 3 - CP850
ECHO 4 - ISO-8859-1
ECHO 5 - ISO-8859-15
ECHO 6 - US-ASCII
ECHO.
ECHO 9 - Reset to System Default (CP%OEMCP%)
ECHO 0 - EXIT
ECHO.
SET /P CP="Select Codepage / Vyberte kodovani stranky: "
if %CP%==1 (
echo Set default Codepage to CP1252
reg add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 1252>nul" /f
) else if %CP%==2 (
echo Set default Codepage to UTF-8
reg add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 65001>nul" /f
) else if %CP%==3 (
echo Set default Codepage to CP850
reg add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 850>nul" /f
) else if %CP%==4 (
echo Set default Codepage to ISO-8859-1
add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 28591>nul" /f
) else if %CP%==5 (
echo Set default Codepage to ISO-8859-15
add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 28605>nul" /f
) else if %CP%==6 (
echo Set default Codepage to ASCII
add "%ROOT_KEY%\Software\Microsoft\Command Processor" /v Autorun /t REG_SZ /d "@chcp 20127>nul" /f
) else if %CP%==9 (
echo Reset Codepage to System Default
reg delete "%ROOT_KEY%\Software\Microsoft\Command Processor" /v AutoRun /f
) else if %CP%==0 (
echo Bye
) else (
echo Invalid choice / Neplatna volba
pause
)
echo.
TITLE Java aplikace Papousek - autor: programervit.kesug.com
echo ==============================================
echo Java aplikace Papousek - autor: programervit.kesug.com
echo ==============================================
echo.
echo.
java -jar papousek.jar
echo.
echo ===============================================
echo Press any key to exit the application.
echo Stiskem libovolne klavesy ukoncis aplikaci.
echo ===============================================
echo.
pause
exit
Zobrazeno 6 zpráv z 6.