Здравствуйте, Kum, Вы писали:
Kum>Далее пытаюсь перевести в строку Kum>
Kum>_inputLine = _inputLine + new UTF8Encoding(true).GetString(data,0,i);
Kum>
Kum>Но русских букв как небыло, так и нет Kum>Может кто-нибудь поможет?
а) при работе с потоками нельзя пересоздавать объект Encoding — возможно, вы еще не дочитали символ (он занимает несколько байт) до конца, енкодер его не перевел в строку — ждет продолжения
честно говоря, забыл как надо делать и посмотреть сейчас негде. по-моему в MSDN был пример как работать ИМЕННО в такой ситуации
б) _inputLine — какого типа, не string случайно???
Здравствуйте, Kum, Вы писали:
Kum>Народ, что-то совсем запутался... Kum>Пишу IRC клиента, но наткнулся на проблему с кодировкой. Kum>Читаю поток в буфер Kum>
Kum>byte[] data;
Kum>
Kum>Далее пытаюсь перевести в строку Kum>
Kum>_inputLine = _inputLine + new UTF8Encoding(true).GetString(data,0,i);
Kum>
Kum>Но русских букв как небыло, так и нет Kum>Может кто-нибудь поможет?
Здравствуйте, ussr, Вы писали:
U>а) при работе с потоками нельзя пересоздавать объект Encoding — возможно, вы еще не дочитали символ (он занимает несколько байт) до конца, енкодер его не перевел в строку — ждет продолжения U>честно говоря, забыл как надо делать и посмотреть сейчас негде. по-моему в MSDN был пример как работать ИМЕННО в такой ситуации
U>б) _inputLine — какого типа, не string случайно???
Здравствуйте, Козьма Прутков, Вы писали:
КП>Kum wrote: >> Но русских букв как небыло, так и нет
КП>а что есть? Вот что если взять и перевести этот массив байт в строку в КП>кодировке 1251? Хорошо бы результат этого сюда положить.
Так в этом то и проблема. Не получается перевести
Читаю из потока в
char[] data
Отсылаю себе сообщение с русскими буквами.
Читаю в цикле полученное сообщение
Kum wrote: > Отсылаю себе сообщение с русскими буквами. > Читаю в цикле полученное сообщение >
> d = (char)reader.Read();
> data[i++] = d;
>
так поток кончился, при чем тут кодировка-то? Можешь вызвать
reader.ReadBytes(1024) и посмотреть полный массив байт (он будет меньше
1024, в противном случае увеличь эту цифру)? Тока именно байт, не
переводя в чары, строки и прочую ересь. 16-ричное представление сюда.
Здравствуйте, Kum, Вы писали:
AVK>>А кто такой reader?
Kum>
Kum>private NetworkStream stream;
Kum>reader = new StreamReader(stream);
Kum>
Ну и? Неужели не видишь косяка? Тогда еще раз повторяю вопрос — ты уверен что сервер отдает данные в кодировке UTF8? Что написано в документации к серверу или протоколу?
Здравствуйте, Козьма Прутков, Вы писали:
КП>так поток кончился, при чем тут кодировка-то? Можешь вызвать КП>reader.ReadBytes(1024) и посмотреть полный массив байт (он будет меньше КП>1024, в противном случае увеличь эту цифру)? Тока именно байт, не КП>переводя в чары, строки и прочую ересь. 16-ричное представление сюда.
В общем перепробовал все кодировки. UTF7 хоть что-то похожее на символы. Но русских все-равно нет.
С остальными полный бред.
Когда
reader = new StreamReader(stream,System.Text.Encoding.UTF7);
отправил себе слово "привет" с [0x3c]. Вначале идет системная информация