Показать сообщение отдельно
Старый 05.10.2008, 17:39   #13
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Непонятки с кодировкой...

Объясняю. В utf-8 символы кодируются от 1 до 4 байт. Принимает программа побайтно, а при присваивании байтов типу String приводит к автоматическому преобразования данного байта к utf-8, то есть КАЖДЫЙ из байтов (а не из символов) становится от 1 до 4 байтов. То есть внешне получается, что вы utf-8 считываете в кодировке ASCII. Выход из этого вижу один. Парсить принимаемые данные в программе. Нужно отлавливать каждый байт более 192, после этого прибавлять к нему ВСЕ байты, идущие за ним, ПОКА не встретится байт менее 128 или более 192. Все эти байты в той же последовательности берём как int и конкатенируем к строке (или через буфер) с приставкой (char). Это я говорю, как бы я на Java сделал бы. Хотел я либу написать даже, гг. Но мне кажется, что способ весьма тормозной. Но зато полная интернациональность - возможность передавать текст на любом языке, а не только на русском. Но если использовать utf-8 для передачи через интернет, то нужно помнить, что траффик будет больше.
(Offline)
 
Ответить с цитированием