Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 13

Преобразовать строку

02.11.2016, 20:55. Показов 1232. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
добрый день, знаю, тема заезженная, но походу у меня руки из ж*пы ((( есть такая строка
København
я ее парсю с хтмл страницы и вывожу в листбокс, проблема в том, что как раз 2 буква выводится не правильно. В нотепад++, если поменять кодировку на утф8, то все нормально отображается, а вот при анси выводит "Гё", как и в листбоксе. Пытался перевести стринг переменную в утф8, но получал взамен лишь знаки вопроса, тобишь K??benhavn.
Можете помочь мне ?

Добавлено через 6 минут
п.с моя последняя попытка конвертирования (тут я совсем извращался, ибо ничего не получалось)
C#
1
2
3
4
5
6
7
8
9
10
11
12
                    byte[] in_bytes = new byte[str.Length];
 
                    Encoding in_code = Encoding.ASCII;
                    Encoding out_code = Encoding.UTF8;
 
                    MemoryStream fin = new MemoryStream(System.Text.Encoding.ASCII.GetBytes(str));
 
                    fin.Read(in_bytes, 0, str.Length);
 
 
                    byte[] out_bytes = Encoding.Convert(in_code, out_code, in_bytes, 0, str.Length);
                    string result = System.Text.Encoding.UTF8.GetString(out_bytes).TrimEnd('\0');
в str - записан текст
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.11.2016, 20:55
Ответы с готовыми решениями:

Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N,
Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N, то отбросить первые...

Преобразовать строку
Дано целое число N (> 0) и строка S. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N, то отбросить...

Преобразовать строку в столбик
имеется строка длиной, допустим, 500 байт. Необходимо через каждые 50 символов вставлять '\r' + '\n' чтобы в итоге получился столбик из 10...

13
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18288 / 14211 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
02.11.2016, 21:20
fooxy, откуда эта строка приходит?
0
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 13
02.11.2016, 21:27  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
fooxy, откуда эта строка приходит?
парсю отсюда тык там много строк такого вида
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18288 / 14211 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
02.11.2016, 21:28
fooxy, покажи код получения текста с сайта
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,230
02.11.2016, 21:32
Цитата Сообщение от fooxy Посмотреть сообщение
как и в листбоксе
Если в вашей кодировке по умолчанию нету второго символа, а в UTF8 есть, то логика подсказывает, что надо просто сконвертить в UTF8:
C#
1
2
3
4
5
6
private static string ConvertToUtfEncoding(string sourceString)
        {
            var bytes = Encoding.Default.GetBytes(sourceString);
            var result = Encoding.Convert(Encoding.Default, Encoding.UTF8, bytes);
            return Encoding.UTF8.GetString(result);
        }
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18288 / 14211 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
02.11.2016, 21:34
Цитата Сообщение от IamRain Посмотреть сообщение
то логика подсказывает, что надо просто сконвертить в UTF8
Лучше получить данные сразу в правильной кодировке.
1
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,230
02.11.2016, 21:36
А, блин, мы же не знаем кодировку исходной строки, неправильно сделал.
0
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 13
02.11.2016, 21:39  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
fooxy, покажи код получения текста с сайта
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
                    MatchCollection matchs = new Regex(@"eparator"">\n <a href[^!]+?<td colspan=""5"" class=""matchesS", RegexOptions.IgnoreCase).Matches(str);
 
                      if (matchs.Count > 0)
                      {
                          foreach (Match match in matchs)
                          {
                              var m = Pars(match.Value, "leagueNam", "</a>", 0).Replace("e">\n ", "");
                              listBox1.Items.Add("Chemp: " + m);
                              links.Add("chemp");
                              MatchCollection matchs2 = new Regex(@": 24px;[^!]+?matchLinksIcon", RegexOptions.IgnoreCase).Matches(match.Value);
 
                              if (matchs2.Count > 0)
                              {
                                  foreach (Match match2 in matchs2)
                                  {
 
                                      name1 = Pars(match2.Value, ">", "</a>", 0);
                                      name2 = Pars(Pars(match2.Value, name1 + "<", "watched", 0), "24px;">", "</a>", 0);
 
                                      comparelink = Pars(match2.Value, "class="boxH2h" href="", """, 0);
                                      //   richTextBox1.AppendText(comparelink + Environment.NewLine + Environment.NewLine);
                                      links.Add(comparelink);
                                      //  richTextBox1.AppendText(name1 + "    VS    " + name2 + Environment.NewLine);
                                      listBox1.Items.Add(name1 + "    VS    " + name2);
                                  }
 
                              }
Добавлено через 1 минуту
1 регуляркой я парсю все матчи по чемпу, а потом (во 2-ой регулярке) рассматриваю каждый матч отдельно)
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18288 / 14211 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
02.11.2016, 21:42
fooxy, это не то. Я неточно выразился. Меня интересует код скачивания текста с сайта.

Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от fooxy Посмотреть сообщение
1 регуляркой ..., а потом (во 2-ой регулярке)
Регулярные выражения плохо подходят для разбора html. Лучше использовать специаилизированные библиотеки. Но не будем пока отвлекаться.

0
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 13
02.11.2016, 21:56  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
fooxy, это не то. Я неточно выразился. Меня интересует код скачивания текста с сайта.
ты имеешь в виду гут запрос ?
для этого я юзаю xNET
C#
1
2
3
4
5
6
7
8
9
10
11
using (var request = new HttpRequest())
                {
                    if (proxy != "")
                        request.Proxy = ProxyClient.Parse(ProxyType.Socks5, proxy);
                    
                    request.UserAgent = Http.ChromeUserAgent();
                    request.AllowAutoRedirect = false;
 
                    HttpResponse response = request.Get("http://fcstats.com/date,"+date+".php");
 
                    string str = response.ToString();
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,230
02.11.2016, 22:02
Тут используется ISO 8859-1 Latin 1; Western European.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private static string ConvertToUtf8Encoding(string sourceString, Encoding sourceEncoding)
        {
            var bytes = sourceEncoding.GetBytes(sourceString);
            var result = Encoding.Convert(sourceEncoding, Encoding.UTF8, bytes);
            return Encoding.UTF8.GetString(result);
        }
   
       private void Form1_Load(object sender, EventArgs e)
        {
            //ISO 8859-1 Latin 1; Western European (ISO) - code page 28591
            var encoding = Encoding.GetEncoding(28591);
            var resultString = ConvertToUtf8Encoding(targetString, encoding);
            listBox1.Items.Add(resultString);
        }
Второй символ отображается корректно.

Добавлено через 3 минуты
Нашел здесь.
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18288 / 14211 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
02.11.2016, 22:20
Лучший ответ Сообщение было отмечено fooxy как решение

Решение

Цитата Сообщение от fooxy Посмотреть сообщение
ты имеешь в виду гут запрос
Ja ja! Natürlich.

Цитата Сообщение от fooxy Посмотреть сообщение
юзаю xNET
Добавь перед вызовом request.Get():
C#
1
request.CharacterSet = Encoding.UTF8;
1
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 13
02.11.2016, 22:32  [ТС]
IamRain, OwenGlendower спасибо большое за помощь !!!

Цитата Сообщение от OwenGlendower Посмотреть сообщение
ты имеешь в виду гут запрос
Ja ja! Natürlich.
даж не заметил )) гет*
0
0 / 0 / 0
Регистрация: 06.06.2017
Сообщений: 1
06.06.2017, 22:49
парсю отсюда тык там много строк такого вида
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.06.2017, 22:49
Помогаю со студенческими работами здесь

Преобразовать строку в дату
Помогите пожалуйста не могу сделать, как преобразовать время в строку,работаю c Excel, надо вытащить с ячейки время указанное в ней и ...

Преобразовать строку в массив
Привет всем, у меня есть вот такой код: WebClient client = new WebClient(); client.Headers =...

Преобразовать строку в hex
Подскажите пожалуйста! Как преобразовать строку TextBox-a в массив байтов? Ввожу в TextBox &quot;222222&quot; (без кавычек) в listBox...

Преобразовать строку в int
Есть файл: 13 23 41 12 32 0 2 4

Преобразовать строку, удалив *
Задание - Дана строка. Преобразовать ее, удалив каждый символ * и повторив каждый символ, отличный от *. Сделать нужно через str.Remove


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru