Всем привет! На вступление времени нет, перейду к делу:
Код:
...
Stream s = wr.GetResponseStream();
StreamReader sr = new StreamReader(s);
string fulltext = sr.ReadToEnd();
sr.Close();
s.Close();
int start = fulltext.IndexOf("<pre>") + 5;
int count = fulltext.IndexOf("</pre>") - fulltext.IndexOf("<pre>") - 6;
text = fulltext.Substring(start, count);
textBox3.Text = text;
...
Привел кусочек кода. Хочу отобразить текст с вэб-странички и все бы ок за исключением того, что при отображении вместо перехода на новую строку отображается квадратик (в Блокноте тоже самое, в др. текстовых редакторах нормально отображается). Пробовал в StreamReader указывать различные кодировки - не помогло. В чем проблема и какие есть пути решить ее?
[Ответ]
Yandex 23:35 08.12.2009
Мамед, перевод строки это #13 + #10 (возврата каретки + символ новой строки). C html у тебя видимо что то другое приходит - надо определить код этого символа и провести замену на указанные два.
P.S. В *nix достаточно #10.
[Ответ]
Мамед 18:09 09.12.2009
Yandex, не совсем понял насчет определения кода символа и замены. Заменить квадратики представляется возможным если в качестве заменяемого указывать "\n", но на что менять - непонятно. Пробовал на #13/#10 - не помогло. По поводу того, что приходит, нового ничего сказать не могу: рассмотрел потоки в хттп отладчике - во входящем потоке все тоже отображается нормально с обычным переходом на новую строку.
[Ответ]
Yandex 18:25 09.12.2009
Мамед, то есть текст, имеющий \n = #13#10, не переносит слова? Чудеса!
Как вариант: текст со страницы идет в unicode, а #13#10 это ansii символ переноса вроде как.
Т.е. я бы сначала понял какая кодировка приходит (для C# это видимо utf-8 или 16), а дальше думал что с ней делать.
[Ответ]
Мамед 19:27 09.12.2009
Yandex, походу придется конвертацией кодировок заниматься. Буду пробовать, ниче не остается. Сама страница в Win-1251. Как вариант вижу еще разбить на массив строк (разбиение проводить по этим самым квадратикам) и с массива заново вывести текст. В таком случае квадраты должны исчезнуть, но вариант не самый лучший, да, и, к тому же, не помешало бы узнать, в чем проблема и как не обойти ее, а решить лучше.
[Ответ]
Part!zan 19:29 09.12.2009
Мамед, вместо \n пиши \r\n, может поможет... Вообще, переводы строк в html игнорируются, для это есть тег <br>. Хотя, у тебя текст в <pre>... Короче, смотри, что у тебя в оригинале за символ перевода строки.
[Ответ]
Мамед 19:37 09.12.2009
в Коде страницы был "лысый" текст без тэгов на строках. Находился он в <pre></pre>. Кстати, замена на /r/n помогла. Спасибо за верное решение, и, даже, большое спасибо за то, что вовремя написал. Я только только собирался с кодировками поиграться.
Yandex'у тоже всех благ - одна голова хорошо, а больше - лучше. Вопрос решен.
[Ответ]