none
кодировать в UTF-8 RRS feed

  • Вопрос

  • При запросе к сайту некоторые символы возвращает в кодировке UTF-8 в виде \u0439 соответственно c# видит c литерами как “\\u0439”. Как преобразовать “\\u0439” в “\u0439” ?

    18 февраля 2012 г. 9:34

Ответы

Все ответы

  • Каким образом вы обращаетесь к сайту? С чего вы взяли, что С# видит сисмволы с двумя слэшами?
    20 февраля 2012 г. 6:04
    Модератор
  • Если после обращения к сайту вы получаете массив байт, то преобразовать их в строку можете следующим образом:

    System.Text.Encoding.Unicode.GetString(/*массив байт*/);

    Для связи [mail]

    • Помечено в качестве ответа NIKkakNIK 20 февраля 2012 г. 19:43
    • Снята пометка об ответе NIKkakNIK 20 февраля 2012 г. 19:43
    20 февраля 2012 г. 6:31
  • Каким образом вы обращаетесь к сайту? С чего вы взяли, что С# видит сисмволы с двумя слэшами?
    HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(URI);
    myHttpWebRequest.UserAgent = "Mozila/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2;";
    myHttpWebRequest.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
    myHttpWebRequest.Headers.Add("Accept-Language", "ru");
    myHttpWebRequest.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
    HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
    StreamReader myStreamReader = new StreamReader(myHttpWebResponse.GetResponseStream(),System.Text.Encoding.UTF8);
    string html = myStreamReader.ReadToEnd();

    в html содержиться код страницы, в котором содержиться строка с словом L'Arriv\u0439e

    А если открыть через браузер интерпритирует как: L'Arrivйe

    Я не стану спорить о правильности написания данного слова но в последствие были и другие подобные слова только на этот раз они были корректно написаны. 

    если в сделать так то string temp = "\u0439";

    после обращения к temp она равна й.

    У меня не выходить это динамически сделать например так temp = "\u"+"0439"; выдает ошибку !!!



     


    • Изменено NIKkakNIK 20 февраля 2012 г. 7:43
    20 февраля 2012 г. 7:43
  • У меня не выходить это динамически сделать например так temp = "\u"+"0439"; выдает ошибку !!!

    Потому что это формат записи юникод символа, его нельзя разрывать.

    А для чего вам нужен именно такой разыв?


    Для связи [mail]

    20 февраля 2012 г. 8:07
  • А если вот так:

                using (var client = new System.Net.WebClient())
                {
                    client.Encoding = System.Text.Encoding.UTF8;
                    string html = client.DownloadString(URI);
                }
    C# как получает слова?
    • Предложено в качестве ответа LXGDARKEditor 20 февраля 2012 г. 14:04
    • Отменено предложение в качестве ответа NIKkakNIK 20 февраля 2012 г. 19:21
    20 февраля 2012 г. 12:12
    Модератор
  • У меня не выходить это динамически сделать например так temp = "\u"+"0439"; выдает ошибку !!!

    Потому что это формат записи юникод символа, его нельзя разрывать.

    А для чего вам нужен именно такой разыв?

    Я знаю что так нельзя я просто хотел показакать как пример определиния динамически символа.
    20 февраля 2012 г. 19:21
  • А если вот так:

                using (var client = new System.Net.WebClient())
                {
                    client.Encoding = System.Text.Encoding.UTF8;
                    string html = client.DownloadString(URI);
                }
    C# как получает слова?
    получает тоже самое.
    20 февраля 2012 г. 19:22
  • Если после обращения к сайту вы получаете массив байт, то преобразовать их в строку можете следующим образом:

    System.Text.Encoding.Unicode.GetString(/*массив байт*/);

    Для связи [mail]

    зачем преобразовавать если я принудительно указываю какую кодировку использовать 

    StreamReader myStreamReader = new StreamReader(myHttpWebResponse.GetResponseStream(),System.Text.Encoding.UTF8);

    P.S.

    если ставлю Unicode получую китайские иероглифы


    • Изменено NIKkakNIK 20 февраля 2012 г. 19:48
    20 февраля 2012 г. 19:45
  • Страница в общем одступе(в сети где-нибудь выложена)?
    21 февраля 2012 г. 4:29
    Модератор
  • Страница в общем одступе(в сети где-нибудь выложена)?

    вот кусок кода страницы насчет которого я справшивал:

    {"artist":"Vestascension","title":"L'Arriv\u0439e","sid":1339811,"mid":628930}



    • Изменено NIKkakNIK 21 февраля 2012 г. 8:36
    21 февраля 2012 г. 6:09
  • Что вы в итоге хотите добиться? Заменить последовательность \u0439 на символ Й?

    Тогда смотрите решение из топика - How do convert unicode escape sequences to unicode characters in a .NET string


    Для связи [mail]


    • Изменено Abolmasov Dmitry 21 февраля 2012 г. 6:56
    • Предложено в качестве ответа ulcerModerator 21 февраля 2012 г. 7:19
    • Помечено в качестве ответа NIKkakNIK 21 февраля 2012 г. 13:36
    21 февраля 2012 г. 6:56