![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
lat |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 14.1.2008 Репутация: нет Всего: 1 |
1. (stream instanceof FileInputStream) кодировка определяется нормально и в (1) данные записываются в нормальном виде. 2. (stream instanceof new StringBufferInputStream("ПРЕВЕД МЕДВЕД!");) в (1) получаем бред вместо ожидаемого. Как сделать что б независимо от того кто есть "stream" (stream instanceof ?) кодировка определялась правильно? Это сообщение отредактировал(а) lat - 3.2.2011, 14:09 --------------------
Gott weiß ich will kein Engel sein |
|||
|
||||
lat |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 14.1.2008 Репутация: нет Всего: 1 |
Не могу понять в какой кодировке StringBufferInputStream пакует. Если брать данные из файла, то для русских букв идут отрицательные эквиваленты в таблице кодировок (в дебаге видно что все -).
StringBufferInputStream делает что то иное:
Print => "char:+, int:43" Хотя должно было быть => "char:Ы, int:-ЧТО-ТО-ТАМ" Это сообщение отредактировал(а) lat - 3.2.2011, 16:15 --------------------
Gott weiß ich will kein Engel sein |
|||
|
||||
Skipy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 487 Регистрация: 24.8.2006 Где: Москва, Россия Репутация: 6 Всего: 16 |
Автоматического определения кодировки тут нет. И быть не может.
http://www.skipy.ru/technics/encodings.html |
|||
|
||||
lat |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 14.1.2008 Репутация: нет Всего: 1 |
Прочитал, очень достойная работа. Грамотно написано. Внимание, теперь вопрос ...
Console:
где же "ЫЫЫ"? =) Это сообщение отредактировал(а) lat - 4.2.2011, 13:25 --------------------
Gott weiß ich will kein Engel sein |
||||
|
|||||
techmax |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 5.9.2007 Где: Красноярск Репутация: 2 Всего: 2 |
Из документации по StringBufferInputStream
Only the low eight bits of each character in the string are used by this class. Класс deprecated. |
|||
|
||||
Skipy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 487 Регистрация: 24.8.2006 Где: Москва, Россия Репутация: 6 Всего: 16 |
Так оно никогда не будет работать. Как сказано в описании класса, StringBufferInputStream, он берет только нижний байт. Строки в памяти в кодировке UTF-16BE, код Ы - 0x042B. Соответственно, во входном потоке у Вас оказываются три байта 0x2B. Когда Вы пытаетесь их интерпретировать однобайтовыми кодировками типа ISO-8859-X, IBMXXX, koi-X или windows-XXXX - Вы получаете три символа '+' (его код - 0x2B), ибо нижняя часть таблицы у этих кодировок совпадает. То же происходит и с UTF-8 - у нее первые 127 символов однобайтовые. Многобайтовые кодировки, естественно, тоже не покажут Вам ничего хорошего.
Это сообщение отредактировал(а) Skipy - 11.2.2011, 15:35 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |