Problém s českými znaky - načítání ze souboru

Vše okolo vývoje aplikací pro platformy Windows Phone a Windows 10 Mobile
Odpovědět
Sandak
nováček
nováček
Příspěvky: 39
Registrován: ned led 31, 2010 19:12
Zařízení: Samsung Omnia 7, Nokia Lumia 800 Black
Kontaktovat uživatele:

Problém s českými znaky - načítání ze souboru

Příspěvek od Sandak » ned lis 13, 2011 14:35

Ahoj mám problém s českými znaky. Následující metoda mi čte text ze souboru .txt a text vrací v pohodě, ale jakmile je tam jakýkoliv český znak tak mi to vyhodí � ten nejde vykreslit ani s ním pracovat.

Kód metody:

Kód: Vybrat vše

private string loadSentence()
        {
            using (StreamReader reader = new StreamReader(TitleContainer.OpenStream(path)))
            {
                string line = reader.ReadLine();
                width = line.Length;
                while (line != null && line != "")
                {
                    lines.Add(line);
                    line = reader.ReadLine();
                }
                Random random = new Random();
                return lines[random.Next(0, lines.Count)].ToUpper();
            }
        }
Potřeboval bych tam někam nastavit aby bylo kódování windows-1250 nevíte prosím kde to nastavit?
Nemáte s tím někdo nějaké zkušenosti? děkuji

Uživatelský avatar
IkE Blaster
smartmaniak
smartmaniak
Příspěvky: 2379
Registrován: sob led 19, 2008 21:42
Zařízení:    
Bydliště: Písek
Kontaktovat uživatele:

Problém s českými znaky - načítání ze souboru

Příspěvek od IkE Blaster » ned lis 13, 2011 15:38

Musíš nastavovat i Encoding, automatická detekce funguje jak kdy (podle BOM, tuším).
http://msdn.microsoft.com/cs-cz/library/ms143456.aspx" onclick="window.open(this.href);return false;

Tahle třída/metoda v Silverlightu není?
http://msdn.microsoft.com/en-us/library/bsy4fhsa.aspx" onclick="window.open(this.href);return false;

Sandak
nováček
nováček
Příspěvky: 39
Registrován: ned led 31, 2010 19:12
Zařízení: Samsung Omnia 7, Nokia Lumia 800 Black
Kontaktovat uživatele:

Problém s českými znaky - načítání ze souboru

Příspěvek od Sandak » ned lis 13, 2011 16:02

bohužel tuto metodu jsem v XNA nenašel "ReadAllLines",

string[] readText = File.ReadAllLines(path, Encoding.UTF8);

Pozměnil jsem následovně tento řádek:
StreamReader sr = new StreamReader(TitleContainer.OpenStream(path), Encoding.GetEncoding("windows-1250"));
bohužel mi to nyní vypisuje chybu: "'windows-1250' is not a supported encoding name." tak teď nevím co tam jiného nastavit, proč mi to nebere windows-1250?

// nastavit tam ("utf-8") funguje ale windows-1250 ne... takže potřebuji někde přidat podporu windows-1250

Poradíte mi prosím jak mám nastavit to kodovani 1250? už sem hledal snad všude a vyzkoušel snad všechno a pořád nic.. potřebuji ty české znaky načíst

Uživatelský avatar
IkE Blaster
smartmaniak
smartmaniak
Příspěvky: 2379
Registrován: sob led 19, 2008 21:42
Zařízení:    
Bydliště: Písek
Kontaktovat uživatele:

Problém s českými znaky - načítání ze souboru

Příspěvek od IkE Blaster » pon lis 14, 2011 23:49

Proč ten text nepřevedeš do UTF-8? Je v tom nějaký problém?

Dle MSDN podporuje WP jen UTF-8, UTF-16LE a UTF-16BE. Věřím, že to půjde obejít, ale pro WP nevyvíjím, nehodlám se tím zatěžovat.

Sandak
nováček
nováček
Příspěvky: 39
Registrován: ned led 31, 2010 19:12
Zařízení: Samsung Omnia 7, Nokia Lumia 800 Black
Kontaktovat uživatele:

Problém s českými znaky - načítání ze souboru

Příspěvek od Sandak » úte lis 15, 2011 9:13

Teď jsem asi trochu mimo. Potřebuji mít soubor *.txt a v něm uložený text, který obsahuje háčky a čárky např jména uživatelů, popřípadě jiné textové řetězce. Jak jej mohu převést na UTF-8, abych poté načetl i tyto speciální znaky jako háčky apod?
Po uložení txt do uft-8 mi samozřejmě zmizí české znaky a potom je nemohu vypsat

Uživatelský avatar
Paulos
stálý přispěvatel
stálý přispěvatel
Příspěvky: 439
Registrován: úte čer 17, 2008 17:06
Zařízení: Nokia Lumia 925, 32 GB
Kontaktovat uživatele:

Problém s českými znaky - načítání ze souboru

Příspěvek od Paulos » čtv lis 17, 2011 23:02

Převod do UTF-8 není zase tak obtížný, použít se dá Notepad++, PSPad i obyčejný Poznámkový blok (při ukládání souboru zvolíš v rozbalovacím poli Kódování: UTF-8). Parsování Windows-1250 a obecně nepodporovaných kódování v C# je problematické, ale můžeš si klidně napsat vlastní dekodér, který ti převede znaky z Win-1250 tabulky znaků na Unicode a s jeho pomocí poté dekódovat. Horší je to s rozpoznáním, jaké má vlastně soubor kódování. Teď to řeším takovým nehezkým způsobem, že čekám na výjimku; pokud se objeví, zachytím ji, extrahuji název kódování z chybové zprávy a pomocí něho identifikuju správné kódování. Pak už můžu správně dekódovat i další znakové sady.

Dodám, že takové omezení znakových sad má, pokud vím, jen WP7 implementace C#, jinde bys měl být v pohodě.

Odpovědět

Zpět na „Programování a vývoj“

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti