Dávkový soubor - problém s českým kódováním   zodpovězená otázka

VB.NET

Ahoj, mám problém s kódováním u BAT souboru. Můj program zapisuje několik řádků do dávkového souboru a následně soubor spustí. Pokud nějaký debilní uživatel nemá ve Windows jméně diakritiku, vše je v pořádku, ale jakmile jí někdo má, vznikne rozsypaný čaj. Zkoušel jsem na začátek dávat "chcp 852", což pomohlo, ale né tak docela. Jenom všechny české znaky byly změněny za německé ostré S.

Mohl by mi prosím někdo ohledně toho poradit, či jaké kódování zvolit v samotném VB při ukládání či jaké přímo v souboru? Jsem v tom už úplně zmatený.

Díky :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Windows naštěstí nemá žádná omezení pro jména uživatelů, tudíž debilní není uživatel, který si zvolí jméno s diakritikou, ale ten, co tomu nedokáže přizpůsobit svůj program.

Snad všechny .NET třídy pro práci se soubory mají jako jeden z parametrů konstruktoru použité kódování. Je potřeba vyzkoušet, které bude fungovat. Hádám Windows 1250 nebo UTF-8.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Co zkusit "chcp 1250", nepomohlo by to?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak jsem zjistil že, samotný VB net používá defaultně kódování ANSII, se kterým mi to nejde, ať už na začátek souboru napíšu cokoliv. Dále jsem ve VB.Netu zkoušel dát kódování na Encoding.GetEncoding(852 nebo 1250), ve kterém by to vlastně mělo fungovat. To samé jsem zkoušel i dávat na začátek souboru, ani jedno z toho nepomohlo. :(

Nevíte co s tím?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A co to nedávat do bat souboru a ten spouštět, proč to nespustit rovnou? Vše co by dělal ten bat soubor určitě jde přepsat i do .NET programu nebo spustit přes cmd.

Tady je příklad jak takové spuštění udělat (je to v C# ale mělo by to z toho být jasné):

Process.Start(new ProcessStartInfo()
{
   Arguments = "/C ping 127.0.0.1 -n 5 > Nul & rmdir \"" + appDir + "\" /S /Q",
   WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden,
   CreateNoWindow = true,
   FileName = string.IsNullOrEmpty(System.Environment.GetEnvironmentVariable("COMSPEC")) ? "cmd.exe" : System.Environment.GetEnvironmentVariable("COMSPEC")
});
nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback