Кракозябры при введении запроса

Adamastor

Client
Регистрация
15.05.2016
Сообщения
282
Благодарностей
14
Баллы
18
Здравствуйте уважаемые форумчане и администрация!

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

Пробовал перекодировать вот так:

Код:
// Convert
                // Create two different encodings.
              Encoding to_enc = Encoding.Default;
              Encoding from_enc = Encoding.UTF8;

              // Convert the string into a byte array.
              byte[] fromBytes = from_enc.GetBytes(type);

              // Perform the conversion from one encoding to the other.
              byte[] toBytes = Encoding.Convert(from_enc, to_enc, fromBytes);

              // Convert the new byte[] into a char[] and then into a string.
              char[] toChars = new char[to_enc.GetCharCount(toBytes, 0, toBytes.Length)];
              to_enc.GetChars(toBytes, 0, toBytes.Length, toChars, 0);
              string text = new string(toChars);
Начало знаки вопросов печатать. Код стырян с MSDN, возможно у вас что-то получше имеется.

P.S. Перекодировать с ЮТФ-8 решил из-за того что "File.AppendAllText(GV.file_csv_end, "54s");" сохранило файл именно в этой кодировке. Других способов узнать кодировку пока не нашел, сильно не пинайте я с ПХП на C# перехожу, сложновато.
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 955
Благодарностей
781
Баллы
113
может вот так попробуй строчку заменить:
byte[] toBytes = Encoding.Convert(to_enc, from_enc, fromBytes);
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 955
Благодарностей
781
Баллы
113
в утф-8 без квадратиков должно быть вроде как
 

Adamastor

Client
Регистрация
15.05.2016
Сообщения
282
Благодарностей
14
Баллы
18
в утф-8 без квадратиков должно быть вроде как
Вот и я так думал, поначалу пока не понимал в какой кодировке символы пробовал с Юникода (ЮТФ-16) в ЮТФ-8 преобразовать.

Сейчас проверю.
 

Adamastor

Client
Регистрация
15.05.2016
Сообщения
282
Благодарностей
14
Баллы
18

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 251
Благодарностей
5 848
Баллы
113

Adamastor

Client
Регистрация
15.05.2016
Сообщения
282
Благодарностей
14
Баллы
18
Перед кодировкой нужно ещё прочитать исходные данные в правильной кодировке.
Например через - https://msdn.microsoft.com/ru-ru/library/system.text.encoding.getencoding(v=vs.110).aspx
Код:
// Create two different encodings.
              Encoding to_enc = Encoding.GetEncoding( 65001 ); 
              Encoding from_enc = Encoding.GetEncoding( 1251 ); 

              // Convert the string into a byte array.
              byte[] fromBytes = from_enc.GetBytes(type);

              // Perform the conversion from one encoding to the other.
              byte[] toBytes = Encoding.Convert(from_enc, to_enc, fromBytes);

              // Convert the new byte[] into a char[] and then into a string.
              char[] toChars = new char[to_enc.GetCharCount(toBytes, 0, toBytes.Length)];
              to_enc.GetChars(toBytes, 0, toBytes.Length, toChars, 0);
              string text = new string(toChars);
Все ровно не работает.

Пробовал вводить запрос на сайте "http://www.online-decoder.com/ru"
Код:
GV.tab.Navigate("http://www.online-decoder.com/ru", "";
        if (GV.tab.IsBusy) GV.tab.WaitDownloading();
       
        HtmlElementCollection els = GV.tab.FindElementsById("input");
        NewClass.ClickElementB(ref els);
        NewClass.TypeIn("полигон");
        els = GV.tab.FindElementsById("guess");
        NewClass.ClickElementB(ref els);
Выдает что кодировка ЮТФ-8. Вводит символы на этом сайте нормально, а вот в ютубовский поиск квадратики.

Смотрел через трафик менеджер - Ютуб отдает хэдер Charset=utf-8
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 251
Благодарностей
5 848
Баллы
113
Нужен пример запроса, который вводите на YouTube. Точнее его исходник, который отображается кракозябрами. В слепую сложно что-то сказать.
 
  • Спасибо
Реакции: Adamastor

Adamastor

Client
Регистрация
15.05.2016
Сообщения
282
Благодарностей
14
Баллы
18
Нужен пример запроса, который вводите на YouTube. Точное его исходник, которые отображается кракозябрами. В слепую сложно что-то сказать.
Спасибо большое за подсказку, если бы не Вы наверное и дальше не обращал бы внимание на то что под носом. Файл ведь я действительно не догадался проверить.

Но не спешим радоваться пока. Попробовал проверить файл на предмет кодировки и мой код мне сказал что кодировка файла ЮТФ-8.
Код:
public static string[] PARSE_EXEL(){
        // Парсим первую строчку CSV файла
        System.IO.StreamReader file = new System.IO.StreamReader(GV.file_csv);
        string[] buffer = file.ReadLine().Split(new Char[]{';'});
        file.Close();
       
       //  Узнаем кодировку
        string encoding = string.Empty;
           
            Stream fs = new FileStream(GV.file_csv , FileMode.Open);
            using (StreamReader sr = new StreamReader(fs, true))
                encoding = sr.CurrentEncoding.ToString();
            GV.proj.SendInfoToLog("Current encoding: " + encoding); // Выводим кодировку в лог
       
        return buffer;
    }
Замените пожалуйста вышеупомянутый метод в исходнике и сами посмотрите.

Файл из которого парсится вводимый запрос прилагаю - http://file.sampo.ru/d7s369/
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 251
Благодарностей
5 848
Баллы
113
Notepad++ говорит, что кодировка Windows-1251
Кодировка.png

Пересоздайте файл в UTF-8
 
  • Спасибо
Реакции: Adamastor

Adamastor

Client
Регистрация
15.05.2016
Сообщения
282
Благодарностей
14
Баллы
18

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)