StreamReader tekst w UTF-8 i krzaki w programie

0

Witam, odczytuję pewien ciąg danych z wywołania httwebprequest i wrzucam go do stringa, tam jednak mam krzaki na polskich znakach. O co tu chodzi?

             WebRequest req = WebRequest.Create(server); //LINKOWANIE

            req.Credentials = new System.Net.NetworkCredential(user, pass); //WPISYWANIE AUTORYZACJI

            string credentials = Convert.ToBase64String(Encoding.UTF8.GetBytes(user + ":" + pass)); //TU

            req.Headers[HttpRequestHeader.Authorization] = "Basic " + credentials; // i TU
            
            HttpWebRequest httpreq = (HttpWebRequest)req;
            httpreq.Method = "POST";
            //httpreq.ContentType = "text/xml; charset=UTF8";

            Stream str = httpreq.GetRequestStream();
            StreamWriter strwriter = new StreamWriter(str, Encoding.UTF8);
       
            StringBuilder soaprequest;
            if (string_xml==null) soaprequest = new StringBuilder(File.ReadAllText(link)); //NULL jeśli okno przesyła czy coś tam
            else soaprequest = new StringBuilder(string_xml);

            strwriter.Write(soaprequest.ToString());
           
            strwriter.Close();

            HttpWebResponse res = (HttpWebResponse)httpreq.GetResponse();

            StreamReader rdr = new StreamReader(res.GetResponseStream(), Encoding.UTF8);
            string result = rdr.ReadToEnd();
            return result;
0

A jesteś pewien, że odpowiedź dostajesz w UTF8?
I po co Ci ten StringBuilder?

0

On jest po to, że wczytuję wzorcowego XML z wywołaniem do programu i wysyłam jako string.

 System.Text.Encoding iso = System.Text.Encoding.GetEncoding("ISO-8859-1");

                System.Text.Encoding utf8 = System.Text.Encoding.UTF8;

                byte[] utfBytes = utf8.GetBytes(rdr.ReadToEnd());

                byte[] isoBytes = System.Text.Encoding.Convert(utf8, iso, utfBytes);

                System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();

                return encoding.GetString(isoBytes); 

Zrobiłem coś takiego i działa, nie wiem czemu takie coś zadziałało, może ktoś objaśnić kod?

0

Może program w którym wyświetlasz nie obsługuje UTF-8

0

Napisałem kod powyżej i działa. Tylko musiałem zrobić konwersję kilka razy nie wiem dlaczego.

2
nexusian napisał(a):

On jest po to, że wczytuję wzorcowego XML z wywołaniem do programu i wysyłam jako string.

No, a do czego StringBuilder? W Twoim przypadku string jest wystarczający. Skoro w żaden sposób nie edytujesz obiektu StringBuilder, to jest on niepotrzebny.

Zrobiłem coś takiego i działa, nie wiem czemu takie coś zadziałało, może ktoś objaśnić kod?

Za pierwszym razem nie używałeś kodowania ISO-8859-1, za drugim go używasz. Może dlatego?

1 użytkowników online, w tym zalogowanych: 0, gości: 1