Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> изменение кодировки для коллекции документов 
:(
    Опции темы
iraidaaa
Дата 18.4.2013, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 27.12.2010

Репутация: нет
Всего: нет



Здравствуйте, скажите,пожалуйста,возможно ли в программе осуществить изменение кодировки файлов?! Допустим, у меня есть папка с документами разных форматов(doc, html, pdf), нужно, чтобы все документы папки стали в кодировке UTF-8.
PM MAIL   Вверх
Samotnik
Дата 18.4.2013, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Слишком общее задание, но в теории можно, почему нет. Вопрос в выборе инструмента и на сколько удобно/быстро это будет работать.  В любом случае, всегда можно вычитать файл в стрим, изменить кодировку и положить стрим обратно, либо создать новый файл.
PM MAIL   Вверх
iraidaaa
Дата 19.4.2013, 04:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 27.12.2010

Репутация: нет
Всего: нет



Samotnik, вот смотрите, я преобразовываю в сисмвольный поток InputStreamReader и меняю кодировку, каким образом мне потом обратно в файлы преобразовать?
PM MAIL   Вверх
math64
Дата 19.4.2013, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Открываешь InputStreamReader в одной кодировке, считываешь (преобразуется в Unicode), открываешь OutputStreamReader в другой и переписываешь записанное.
Но трудности с тем, что нужно ещё заменить кодировку в заголовке в html:
Код

<meta http-equiv="content-type" content="text/html; charset=...">

и в xml:
Код

<?xml version="1.0" encoding="..."?>

PM   Вверх
iraidaaa
Дата 19.4.2013, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 27.12.2010

Репутация: нет
Всего: нет



math64, вы имеете ввиду ,что у html-файлов я таким образом не смогу поменять кодировку?!
PM MAIL   Вверх
math64
Дата 19.4.2013, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Я имею в виду, что кроме замены кодировки, нужно искать объявление кдировки в файле и заменять название кодировки.
PM   Вверх
iraidaaa
Дата 19.4.2013, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 27.12.2010

Репутация: нет
Всего: нет



math64, ммм, понятно..но это реально осуществить?


PM MAIL   Вверх
math64
Дата 19.4.2013, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Конечно, реально. Считываешь весь файл в строку и ищешь информацию о кодировке с помощью regexp, например. Заменяешь и записываешь в новой кодировке.
Другой вопрос, если во входном файле есть символы, которые отсутствуют в выходной кодировке. Их нужно заменять на &#nnn; - сложнее, но тоже решаемо.
PM   Вверх
iraidaaa
Дата 21.4.2013, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 27.12.2010

Репутация: нет
Всего: нет



Я пока просто пробую менять кодировку txt файлов вот таки образом
Код

 File f=new File("c:/temp/file.txt");
 FileInputStream fis=new FileInputStream(f);
 BufferedReader br = new BufferedReader(new InputStreamReader(fis,"UTF-8"));
      
       String str;
      do 
   
       {  str=br.readLine();
         System.out.println(str);  
  
       }
          while ((str=br.readLine())!=null);
         br.close();

 Но почему-то в консоли отображаются квадратики, а если я делаю построчный вывод в файл, то отображаются ромбики с вопросами....В чем может быть проблема???
PM MAIL   Вверх
iraidaaa
Дата 21.4.2013, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 27.12.2010

Репутация: нет
Всего: нет




переписала вот так, всё нормально выводит

Код

 File f=new File("c:/temp/file.txt");
 FileInputStream fis=new FileInputStream(f);
 BufferedReader br = new BufferedReader(new InputStreamReader(fis,"Cp-1251"));
      
       String str;
      do 
   
       {  str=br.readLine();
         System.out.println(str);  
  
       }
          while ((str=br.readLine())!=null);
         br.close();

PM MAIL   Вверх
iraidaaa
Дата 21.4.2013, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 27.12.2010

Репутация: нет
Всего: нет



Я решила просто doc сохранить в txt; но теперь возникла другая проблема...при построчном чтении пропускаются строки, с чем это может быть связано???
PM MAIL   Вверх
dorogoyIV
Дата 21.4.2013, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



Цитата(iraidaaa @  21.4.2013,  17:12 Найти цитируемый пост)
при построчном чтении пропускаются строки, с чем это может быть связано???

убери "do" что бы два раза не считывалось
Код

String str;

while((str = br.readLine()) != null)
{
 System.out.println(str);
}
br.close();

PM MAIL   Вверх
iraidaaa
Дата 22.4.2013, 06:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 27.12.2010

Репутация: нет
Всего: нет




dorogoyIV, когда я делала цикл с предусловием, то происходила ошибка после считывания последней строки
PM MAIL   Вверх
math64
Дата 22.4.2013, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Цитата(iraidaaa @  21.4.2013,  13:52 Найти цитируемый пост)
Но почему-то в консоли отображаются квадратики, а если я делаю построчный вывод в файл, то отображаются ромбики с вопросами....В чем может быть проблема??? 

Консоль по умолчанию использует кодировку 866. Переведите её в 1251 или сохраняйте в файл.
PM   Вверх
iraidaaa
Дата 22.4.2013, 07:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 27.12.2010

Репутация: нет
Всего: нет



math64 , с этим я уже справилась.Но теперь другая проблема:
Я решила просто doc сохранить в txt; но теперь возникла другая проблема...при построчном чтении пропускаются строки, с чем это может быть связано??? 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0916 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.