.NET 4.x ASCII или Windows-1251 - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте Пытаюсь написать парсер, всё вроде понятно кроме одного. Когда пытаюсь спарсить порт то возврашает непонятную строку " & # 51 ; & # 49 ; & # 50 ; & # 56 ; "

(только без пробелов а то браузер сам переводит строку в "3128")

в онлаин декрипторах понял что это кодировка "windows-1251" но после раскодирования получается таже строка, я так понял что это как то связанно с обнулением старшего баита н.т.д. или же это ASCII таблица. Вопрос: Как сделать правильно?
            string url = "http://proxy*******************";
            HtmlWeb web = new HtmlWeb();
            HtmlAgilityPack.HtmlDocument doc = web.Load(url);

            string proxyIP = doc.DocumentNode.SelectNodes("//td[@class='plbc_bloc_proxy_td_ip']")[0].InnerText;
            string Ip = proxyIP.Substring(30);
            Ip = Ip.Substring(0, Ip.Length - 3);
            byte[] data = Convert.FromBase64String(Ip);
            Ip = Encoding.UTF8.GetString(data);
            MessageBox.Show(Ip);

            var proxyPort = doc.DocumentNode.SelectNodes("//td[@class='plbc_bloc_proxy_td_port']")[0].GetType();
            MessageBox.Show(proxyPort.ToString());
 
            byte[] byteUTF8;
            byte[] byteUNICODE;
            string strUnicode = String.Empty;
 
            byteUTF8 = Encoding.UTF8.GetBytes(doc.DocumentNode.SelectNodes("//td[@class='plbc_bloc_proxy_td_port']")[0].InnerText);
            byteUNICODE = Encoding.Convert(Encoding.UTF8, Encoding.Unicode, byteUTF8);
            strUnicode = Encoding.Unicode.GetString(byteUNICODE);

            MessageBox.Show(strUnicode);

Решение задачи: «.NET 4.x ASCII или Windows-1251»

textual
Листинг программы
            string proxyPort = doc.DocumentNode.SelectNodes("//td[@class='plbc_bloc_proxy_td_port']")[0].InnerText;
 
 
            string specSymbols = ";#&";
 
            proxyPort = Regex.Replace(proxyPort, string.Format(@"[{0}]", specSymbols), "");
 
            var str = Split(proxyPort, 2).ToArray();
 
            string portNumber = String.Empty;
            for (int i = 0; i <= str.Length - 1; i++)
            {
                char port = Convert.ToChar(Convert.ToInt16(str[i]));
                portNumber = portNumber + port.ToString();
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы