![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| nas_alex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 8.6.2004 Репутация: нет Всего: нет |
нужно писать в файл в кодировке DOS|WIN .
как это сделать? |
|||
|
||||
| Sleepy_PIP |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 30.6.2004 Где: Moscow Репутация: 4 Всего: 12 |
смотри OutputStreamWriter - там есть чарсет.
А вот как писать в смешанной кодировке - с ходу и не знаю -------------------- -- Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем свободным ..." |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Можно так: открыл-записал-закрыл, сменил кодировку-дописал.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Sleepy_PIP |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 512 Регистрация: 30.6.2004 Где: Moscow Репутация: 4 Всего: 12 |
просто великолепно! А представь что ф. на сетке, что чередование чуть-ли не через 10 байт, что надо возвращаться и дописывать? не, я сам не знаю - поэтому так-же интересно. -------------------- -- Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем свободным ..." |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Есть еще вариант: кодировать строку в массив байт, например: Sting.getBytes(<кодировка>) и писать непосредственно их.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| nas_alex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 8.6.2004 Репутация: нет Всего: нет |
а можно какой-нибудь примерчик ????
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Писать в разных кодировках в файл - вопрос сам по себе не корректен.
Фактически кодировка обозначает какого вида символ заменяет то значене байта, которое храниться в файле. Его можно читать как одной кодировкой, так и другой. Совершенно по барабану. LSD похоже предложил лучшую идею - перед куском записывать значение кодировки и при считывании это значение учитывать. |
|||
|
||||
| nas_alex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 8.6.2004 Репутация: нет Всего: нет |
получилось, спасибо.
вот только маленькая проблемка: перевод строки (\n) в CP866 имеет HEX-код 0A а надо чтоб был 0D 0A как это сделать? |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Значит перед тем как писать в этой кодировке надо предусмотреть, чтобы писалось так - заменять то бишь, ручками, честно.
|
|||
|
||||
| igon |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 1 Всего: 21 |
HEX-код 0A '\n' - это newline или Перевод строки
HEX-код 0D '\r' - это carriage return или Возврат каретки. Это два разных действия, их коды стандартны для всех кодировок, поскольку относятся они к служебным символам. Поэтому можно писать
или
- и честно, и ручкам отдохнуть можно Возврат каретки '\r' как самостоятельное действие сейчас уже не используется и актуален только для DOS приложений. Однако если текстовый процессор интерпретирует '\r' как '\n' - он будет добавлять лишнюю пустую строку.
Идея LSD действительно верная, но я не совсем согласен с комментарием: значение кодировки записывать и учитывать незачем (да она и не записывается в выходной поток). Когда на экран цепочка байтов "D1 F2 F0 EE EA E0" отображается в читаемом виде("Строка") - это потому, что текущая кодировка приложения - Win1251. При смене кодировки увидим абракадабру, хотя сама цепочка байтов не изменится. А вот когда в
указываем другую кодировку, будет меняться именно цепочка байтов и в этом измененном виде она и будет записана в файл. В файле при этом никакой информации о кодировке НЕ БУДЕТ! Прошу извинить меня за многословие, но вот написал - и самому понятнее стало -------------------- Хотите поговорить об этом? |
||||||||
|
|||||||||
| nas_alex |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 8.6.2004 Репутация: нет Всего: нет |
спасибо за помощь.
|
|||
|
||||
| Bulat |
|
||||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 4 Всего: 57 |
Смысл тот же, только случай наоборот, из файла
есть код у меня
раньше вообще ENCODING не дописывал, но и это не помогает нормально считывать из файла русские буквы. Есть вариант конечно переколбасить строку
но что тогда вместо этого лучше использовать? Или может как-то считывать побайтово типа getBytes...... Вообщем мыслей много, но как реализовать лучше в раздумьях??? -------------------- менеджер по кодеврайтингу |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Это конечно хорошо, но хетелось бы четко услышать в чем проблема? Ошибки, русский текст читается неккоретно или еще что? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 4 Всего: 57 |
LSD, сорри, я разобрался, тут совсем не в этом дело было, просто внимательности в одной мелочи самому не хватило
-------------------- менеджер по кодеврайтингу |
|||
|
||||
![]()
|
| Правила форума "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. |