c# konverzia premennej do win1250

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod qwepo753 13. 2. 2011 17:29

Dobry den, iba zacinam s c# a preto by som potreboval poradit. Preliezol som google, ale nic funkcne som nenasiel.
Do premennej nacitavam url z ktorej chcem potom parsovat vybrane hodnoty. Problem je, ze dana stranka je v UTF-8. Po nacitani dat mam rozbitu diakritiku. Potreboval by som premennu prekodovat do win1250. Viete mi niekto pomoc s napisanim kodu, kde mam na vstupe premennu a na vystupe prekodovanu premennu na win1250. Vopreed velmi pekne dakujem. Neviem sa s tym pohnut.
qwepo753
Trvalý BAN

Odeslat příspěvekod Medzzik 13. 2. 2011 17:36

Medzzik
Kolemjdoucí

Odeslat příspěvekod qwepo753 13. 2. 2011 17:46

To som uz pozeral. Ale neviem ako mam zadefinovat, ze chcem z utf-8 do win1205. Skusal som ten script prerobit na win1250, ale znaky boli bez zmeny. Zmenil som
// Create two different encodings.
Encoding ascii = Encoding.ASCII;

na

// Create two different encodings.
Encoding ascii = Encoding.GetEncoding(1250);

Nefungovalo to, resp. neviem ci je to spravny zapis.
Dakujem za odpovede
qwepo753
Trvalý BAN

Odeslat příspěvekod Wikan 13. 2. 2011 18:27

Ještě musíš změnit to druhý. Unicode není to samý co UTF-8.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod qwepo753 13. 2. 2011 18:41

Zmenil som oba. Kod je teraz:

using System;
using System.Text;

namespace ConvertExample
{
class ConvertExampleClass
{
static void Main()
{
string unicodeString = "to občas vypadá mírně prvoplánově, ale závěrečný fotky skutečný";

// Create two different encodings.
Encoding ascii = Encoding.GetEncoding(1250);
Encoding unicode = Encoding.GetEncoding(1250);

// Convert the string into a byte[].
byte[] unicodeBytes = unicode.GetBytes(unicodeString);

// Perform the conversion from one encoding to the other.
byte[] asciiBytes = Encoding.Convert(unicode, ascii, unicodeBytes);

// Convert the new byte[] into a char[] and then into a string.
// This is a slightly different approach to converting to illustrate
// the use of GetCharCount/GetChars.
char[] asciiChars = new char[ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
string asciiString = new string(asciiChars);

// Display the strings created before and after the conversion.
Console.WriteLine("Original string: {0}", unicodeString);
Console.WriteLine("Ascii converted string: {0}", asciiString);
Console.ReadLine();
}
}
}

Ziaden rozdiel nenastal. Viete mi poradit ako na to?
Dakujem
qwepo753
Trvalý BAN

Odeslat příspěvekod Wikan 13. 2. 2011 18:59

No jasně, že nenastal žádný rozdíl, když v proměnných ascii a unicode máš stejné kódování.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod qwepo753 13. 2. 2011 19:11

Pre Wikan: viete mi prosim poradit ako to mam opravit? V c# fakt len zacinam a este sa v nom neorientujem.
Vopred Vam velmi pekne dakujem.
qwepo753
Trvalý BAN

Odeslat příspěvekod Wikan 13. 2. 2011 19:27

Encoding ascii = Encoding.GetEncoding(1250);
Encoding unicode = Encoding.GetEncoding("utf-8");
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod qwepo753 13. 2. 2011 19:55

Skusal som to, ale nefunguje to. Ziadna zmena oproti povodnemu zdroju.
Mate nejake napady ako to riesit?
Dakujem
qwepo753
Trvalý BAN

Odeslat příspěvekod akira.uzai 13. 2. 2011 20:07

a to nemůž s těmi daty pracovat ve správném kódování tedy utf-8, proč je musíš mršit překodováním do 1250? to je nějaká dosová aplikace či co?
あきらうざい
akira.uzai
Junior
Uživatelský avatar

Odeslat příspěvekod qwepo753 13. 2. 2011 20:38

Zdroj taham z url a ta je kodovana utf-8. Ked prevzate data zobrazujem vo form, tak mam rozbitu diakritiku. Ale je to zaujimavy pohlad. Ako sa da c# aplikacia nastavit tak, aby zobrala utf-8? Ak sa vobec da.
Dakujem
qwepo753
Trvalý BAN

Odeslat příspěvekod Wikan 13. 2. 2011 20:45

No ale .net aplikace pracují standardně s utf-8.
Navíc ta konverze podle mě funguje.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod qwepo753 13. 2. 2011 20:57

Ak .net pracuje standartne s utf-8, preco mi potom kazi diakritiku dat kodovanych v utf-8?

Skusal som tu konverziu. A vysledok je rovnaky ako zdroj. Prip. ak to viete niekto odskusat, vylucila by sa chyba u mna.
Dakujem
qwepo753
Trvalý BAN

Odeslat příspěvekod Nargon 13. 2. 2011 21:00

Mno a JAK to nacitas z toho webu? A rovnou sem dej link na ten web, at ti muzem poradit.
Ono bude asi nejlepsi tomu "stahovaci" rovnou nacpat spravne kodovani, aby ti vracel data spravne a ne takhle zmrsene.
Desktop: Ryzen 7 1800X (3.95GHz, 1.35V), Asus Crosshair VI Hero, 16GB DDR4 Ram (3200MHz), 128GB SSD + 3TB HDD, Nvidia GTX 1080
Notebook: Asus UL50VT 15.6" (SU7300@1.7GHz, 4GB ram, 500GB HDD, Intel GMA 4500MHD + nVidia G210M, dlouha vydrz cca 7+ hod)
Nargon
Moderátor

Odeslat příspěvekod qwepo753 13. 2. 2011 21:04

Tu je kod. Ide o parse zo zstranky csfd.

string DestinationUrl = "http://www.csfd.cz/film/228329-avatar/";

try
{
WebClient wc = new WebClient();

String s = wc.DownloadString(DestinationUrl);
//Console.WriteLine("Request was successful?" + s);


}
catch (Exception ex)
{
//Console.WriteLine("Error: {0}", ex.Message);
}
finally
{

}
Naposledy upravil qwepo753 dne 13. 2. 2011 22:51, celkově upraveno 1
qwepo753
Trvalý BAN

Další stránka

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků