none
Поменять кодировку с Utf-8 на windows1251 RRS feed

  • Вопрос

  • Здравствуйте, хочу поменять кодировку с Utf-8 на windows1251

    Пишу так:

    string str = "Привет";
                Encoding utf8 = Encoding.GetEncoding("Utf-8");
                Encoding windows1251 = Encoding.GetEncoding("Windows-1251");
    
                byte[] utf8Byte = utf8.GetBytes(str);
                byte[] windows125Byte = Encoding.Convert(utf8, windows1251, utf8Byte);
                str = windows1251.GetString(windows125Byte);
    
                //Sms.SendSms("89138052076", str);
                Console.WriteLine(str);
    Но оно почему то не преобразовывается....
    По умолчанию кодировка строк в Windows - utf-8?
    Или я что то не то делаю??

    23 марта 2012 г. 4:08

Ответы

Все ответы

  • Здравствуйте.

    Мы можете описать то, что хотите сделать? Т.е. вы откуда-то получаете эту строку и куда-то записываете, на каком этапе неверная кодировка?

    Видимо вам нужно не менять кодировку, а исправить метод SendSms, через что он работает? Возможно там нужно указать правильную кодировку.


    Для связи [mail]

    23 марта 2012 г. 6:29
  • Дмитрий, есть сервис рассылки сообщений(по SMS)
    Нужно ввести номер абонентка, кому нужно доставить сообщение + текст сообщения передать

    В документации прописано, что сообщение должно быть в кодировке 1251
    Я делаю так - заношу в url текст + какие то прочие данные - не важно в данном случае и используя WebResponse + WebRequest посылаю запрос на сервер в виде url и от него получаю ответ(что всё гуд)
    Но почему то текст сообщения, приходящего на телефон - не в той кодировке...
    Вот и не знаю пока - почему так
    23 марта 2012 г. 13:18
  • Во время записи данных в WebRequest указывайте кодировку. У вас же POST запрос идет? Т.е. сразу из строки получайте массив байт в Windows-1251 и этот массив записывайте в исходящий поток. А нужный Encoding еще можно попробовать получить так - Encoding.GetEncoding(1251);


    Для связи [mail]

    23 марта 2012 г. 13:28
  • Во время записи данных в WebRequest указывайте кодировку. У вас же POST запрос идет? Т.е. сразу из строки получайте массив байт в Windows-1251 и этот массив записывайте в исходящий поток. А нужный Encoding еще можно попробовать получить так - Encoding.GetEncoding(1251);


    Для связи [mail]

    Нет, запрос идёт GET - http://www.websms.ru/http_in5.asp?http_username=логин&http_password=пароль&phone_list=71231234567&message=текст сообщения&format=xml

    В документации прописано - что можно использовать POST, но я нет примера

    24 марта 2012 г. 3:15
  • var urlString = HttpUtility.UrlEncode(str, Encoding.GetEncoding(1251));

    см http://msdn.microsoft.com/en-us/library/h10z5byc.aspx

    • Помечено в качестве ответа ansi_str 25 марта 2012 г. 9:07
    24 марта 2012 г. 7:33