čeština ve stringu   zodpovězená otázka

VB.NET, ASP.NET WebForms

Do pole načtu názvy souborů tímto způsobem:

pole = System.IO.Directory.GetFiles(Server.MapPath(cesta))

Z pole je zobrazím v Listboxu:

For Each Name In pole
    Name = Name.Substring(Name.LastIndexOf("\") + 1)
    ListBox1.Items.Add(Name)
Next

...a v tom ListBoxu mám místo "ě" znak "ì", místo "Č" mám "È".

Prosím o návod, jak to napravit (překódovat).

Díky

(Názvy souborů diakritiku obsahují. Na lokálním pc je to vpořádku.)

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

Zaprvé se podívejte co je obsaženo v proměnné "pole". Pokud je to tam stejně, tak s tím nic udělat nepůjde.

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

Nevím, jak se mám podívat jinak, než např. pohledem na zmiňovaný ListBox. Pokud jsem nechal jednu proměnnou z pole vypsat pomocí

Response.Write(pole(2))

tak opět na mém pc to je vpořádku a na serveru turecky.

FTP mi ale zobrazí názvy na serveru i doma stejně a správně :)

WInCommander to umí a System.IO.Directory.GetFiles ne?

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

Vy neumíte ani takové základní věci jako zobrazit obsah proměnné?! Člověče jak ladíte? Mimochodem váš poslední příspěvek absolutně nedává smysl, přečtěte si to po sobě několikrát.

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

Pokud tu něco nedává smysl, tak to jsou vaše odpovědi a různé chování vindous prostředí k češtině na dvou počítačích.

V úvodu jsem se prosil o radu, nikoliv o mentorování a nikoliv nutně vás.

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

No zaprvé pokud neumíte zobrazit obsah proměnné jinak než jejím výpisem pomocí kódu, pak to můžete rovnou zabalit. Chování Windows v různých jazykových prostředích je naprosto korektní. Zobrazení souborů pomocí protokolu FTP nebo pomocí cesty UNC jsou dvě rozdílně fungující věci. Znovu opakuji, že pokud jsou názvy takto už v tom poli získaném pomocí GetFiles, nepůjde s tím nic udělat. Ani jste neuvedl, jestli je server Windows Server, nebo nějaký unixový shit.

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

Balit to rozhodně ještě nehodlám. Spáchal jsem i s tím, co tu předvádím, asi 15 slušně fungujících komerčních webů. Na dvou z nich dokonce školní strávníci objednávají obědy a chválabohu (a všem různým helpfórům) si zatím nikdo nestěžoval, že by dostal rizoto místo řízku :)

Píšu to zde jen proto, abyste i vy objevil, že ty základy asp.netu a VB.netu je sice výhodné znát, ale pro odvrácení např.hladomoru ve dvou jídelnách to nemusí to být podmínkou.

Problém s názvy jsem vyřešil po svém - nahrazením tureckého znaku za český při výstupu z proměnné pole. Šlo jen o 6 zmršených znaků. Jestli má Quantasoft šity nebo něco jiného nevím, ale teď se kvůli mě víc nadřou.

If Label1.Text.IndexOf("ì") > -1 Then Label1.Text = Label1.Text.Replace("ì", "ě")

atd, celkem 6x replacuje a je to. A kvůli tomu jsem dnešek věnoval všelijakým encodig a decoding...

nahlásit spamnahlásit spam -3 / 3 odpovědětodpovědět

Tohle řešení je sice funkční, ale jednou toho budete litovat. Viděl jsem takto řešené problémy s kódováním už tisíckrát, vždy to byl výsledek různě dlouhého snažení o 'čisté' řešení. Tento problém se objevuje napříč jazyky i prostředími často, a vyplatí se jej vyřešit řádně. Teď se vám může klidně stát, že zjistíte, že jste nějaký znak vynechal (resp. replace znaku) a budete to muset předělávat znova. Nevím sice konkrétně ve Vašem případě jak Vám pomoci, ale pokud mohu, radím Vám se na to ještě pořádně podívat, protože tato polovičatí řešení jsou prostě polovičatá řešení a ač si nad nimi povyskočíte radostí, že Vám to konečně funguje, je jen otázka času kdy se ukáže, že v konečném výsledku to nadělalo víc škody, než užitku.

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

To je velmi blbé řešení, takhle nahrazovat pár znaků, které dělají problémy (to, že funguje, neznamená, že je správně). Podívejte se, jestli soubor, který načítáte, a všechny stránky i s příslušnou masterpage jsou v kódování utf-8.

Příspěvek je zařazen ve špatném fóru, jde o ASP.NET aplikaci. A pro pana Linharta podotýkám, že pokud aplikace běží na serveru u webhostingového providera, tak ji prostě ladit nemůžete a jediný rozumný způsob je proměnnou vypsat přes Response.Write nebo do souboru.

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

Opět jsem si nevšimnul, že jde o webovou aplikaci, jinak bych se k problému ani nevyjadřoval.

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

Prověřil jsem kódování mého webu, text všech stránek včetně MasterPage je uložen v utf-8. Ve web.config mám navíc

<globalization   requestEncoding="utf-8"   responseEncoding="utf-8"   culture="auto:cs-CZ"   uiCulture="auto:cs-CZ"/>

Mezi načtením a zobrazením názvu je pouze

Dim pole() As String
pole = System.IO.Directory.GetFiles(Server.MapPath(cesta))
For Each Name In pole
Name = Name.Substring(Name.LastIndexOf("\") + 1)
ListBox1.Items.Add(Name)
Next

Tento kód mi zobrazuje chybně diakritiku v názvech souborů.

(jde o JPG soubory, které se jmenují např. "odšťavňovač.jpg").

Za další typy děkuji.

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

A jak jste ten soubor na server nahrál? Pokud přes FTP, tak to možná bude problém, že se diakritika zmršila.

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

Přesně tak.

Zkusil jsem soubory nahrát přes webové rozhraní a čeština je vpořádku.

Díky moc. :)

nahlásit spamnahlásit spam 1 / 1 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