Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Разбор полётов с кодировками или приведение отличных от UTF-8 в UTF-8? Стратегия? / 15 сообщений из 15, страница 1 из 1
23.10.2016, 20:20
    #39332378
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор полётов с кодировками или приведение отличных от UTF-8 в UTF-8? Стратегия?
Здравствуйте, программирую одно приложение, где пользователь может работать со своими файлами но в моем приложении. Файлы текстовые. Я несколько раз стыкнулся с проблемами, что например читаю файл в UTF-8, а он UTF-16(LE) или наоборот.
Иногда получаю "крокозябры".

Поэтому нашел https://code.google.com/archive/p/juniversalchardet/ и с его помощью проверяю кодировку.

Внимание вопрос.

Если я определил кодировку отличную от UTF-8, а содержимое файла мне нужно в UTF-8 - мои действия?
Читаю файл в нужной кодировке и перезаписываю старый в кодировке UTF-8?
Как это провернуть максимально быстро с точки зрения перформенса?

Спасибо за подсказки.
...
Рейтинг: 0 / 0
24.10.2016, 10:03
    #39332541
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор полётов с кодировками или приведение отличных от UTF-8 в UTF-8? Стратегия?
_webdev_Здравствуйте, программирую одно приложение, где пользователь может работать со своими файлами но в моем приложении. Файлы текстовые. Я несколько раз стыкнулся с проблемами, что например читаю файл в UTF-8, а он UTF-16(LE) или наоборот.
Иногда получаю "крокозябры".

Поэтому нашел https://code.google.com/archive/p/juniversalchardet/ и с его помощью проверяю кодировку.

Внимание вопрос.

Если я определил кодировку отличную от UTF-8, а содержимое файла мне нужно в UTF-8 - мои действия?
Читаю файл в нужной кодировке и перезаписываю старый в кодировке UTF-8?
Как это провернуть максимально быстро с точки зрения перформенса?

Спасибо за подсказки.

Записать в новый удалить старый переименовать новый в старый, главное не побайтно писать.
...
Рейтинг: 0 / 0
25.10.2016, 10:13
    #39333306
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор полётов с кодировками или приведение отличных от UTF-8 в UTF-8? Стратегия?
llemingглавное не побайтно писать. - не понял.. ((( А как файл записывать? Файл же и есть массив байтов..
...
Рейтинг: 0 / 0
25.10.2016, 11:36
    #39333398
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор полётов с кодировками или приведение отличных от UTF-8 в UTF-8? Стратегия?
_webdev_llemingглавное не побайтно писать. - не понял.. ((( А как файл записывать? Файл же и есть массив байтов..
_webdev_Как это провернуть максимально быстро с точки зрения перформенса?


http://www.realcoding.net/articles/glava-18-potoki-vvodavyvoda.html#4
буферизированный IO
...
Рейтинг: 0 / 0
25.10.2016, 11:41
    #39333406
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор полётов с кодировками или приведение отличных от UTF-8 в UTF-8? Стратегия?
так и знал что где есть почти готовое решение
Apache Commons FileUtils

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;

public class Main {
    public static void main(String[] args) throws IOException {
        String filename = args[0];
        File file = new File(filename);
        String content = FileUtils.readFileToString(file, "ISO8859_1");
        FileUtils.write(file, content, "UTF-8");
    }
}



если я правильно понял FileUtils даже проблему с BOM порешает сама.

Из минусов приведенного решения это то предполагает что файлы легко влезают в память т.е. небольшие по размеру.
...
Рейтинг: 0 / 0
25.10.2016, 11:49
    #39333414
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор полётов с кодировками или приведение отличных от UTF-8 в UTF-8? Стратегия?
llemingИз минусов приведенного решения это то предполагает что файлы легко влезают в память т.е. небольшие по размеру.
Используй IOUtils.copy(), а текстовые стримы с нужными кодировками создавай сам.
...
Рейтинг: 0 / 0
25.10.2016, 11:53
    #39333421
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор полётов с кодировками или приведение отличных от UTF-8 в UTF-8? Стратегия?
lleming,
это какой _текстовый_ файл в память не влезает? )
...
Рейтинг: 0 / 0
25.10.2016, 12:09
    #39333446
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор полётов с кодировками или приведение отличных от UTF-8 в UTF-8? Стратегия?
Petro123это какой _текстовый_ файл в память не влезает? )
Гы. Легко генерю трейс-файлы на десятки гигов в час. :)
Ночной трейс перестает влезать в память.
...
Рейтинг: 0 / 0
25.10.2016, 12:14
    #39333455
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор полётов с кодировками или приведение отличных от UTF-8 в UTF-8? Стратегия?
llemingтак и знал что где есть почти готовое решение
Без готового решения, кода не сильно больше:
http://stackoverflow.com/a/3018806
...
Рейтинг: 0 / 0
25.10.2016, 12:17
    #39333462
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор полётов с кодировками или приведение отличных от UTF-8 в UTF-8? Стратегия?
Сергей АрсеньевPetro123это какой _текстовый_ файл в память не влезает? )
Гы. Легко генерю трейс-файлы на десятки гигов в час. :)
Ночной трейс перестает влезать в память.
уровень логирования повысь). Или ротацию. Генерировать и туалетную бумагу можно).
...
Рейтинг: 0 / 0
25.10.2016, 14:07
    #39333578
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор полётов с кодировками или приведение отличных от UTF-8 в UTF-8? Стратегия?
Petro123lleming,
это какой _текстовый_ файл в память не влезает? )

в теории возможно. на практике конешно врядли.
...
Рейтинг: 0 / 0
25.10.2016, 14:24
    #39333599
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор полётов с кодировками или приведение отличных от UTF-8 в UTF-8? Стратегия?
llemingтак и знал что где есть почти готовое решение
Apache Commons FileUtils - Пасиб, да, в этом проекте я пользуюсь (com.google.common.io) мне хотелось понять принцип, не упускаю ли я чего.
На счет величины, то это не мой случай, у меня размер файла макс 1Мб будет,
И да, хороший пункт с BOM.
У меня вот решение.
Код: java
1.
2.
3.
            if (xmlString.startsWith("\uFEFF")) {
                xmlString = xmlString.substring(1);//remove BOM
            }
...
Рейтинг: 0 / 0
25.10.2016, 14:30
    #39333607
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор полётов с кодировками или приведение отличных от UTF-8 в UTF-8? Стратегия?
_webdev_,

А если случится : EF BB BF ?
...
Рейтинг: 0 / 0
25.10.2016, 15:32
    #39333663
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор полётов с кодировками или приведение отличных от UTF-8 в UTF-8? Стратегия?
Petro123lleming,
это какой _текстовый_ файл в память не влезает? )

Логи гуглового рекламного сервера большого клиента. Один файл на час.
gz файл на 2Гб - легко. Распакованный- ну ты понял
...
Рейтинг: 0 / 0
25.10.2016, 16:08
    #39333703
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбор полётов с кодировками или приведение отличных от UTF-8 в UTF-8? Стратегия?
Сергей Арсеньев_webdev_,

А если случится : EF BB BF ? - А такого не знаю, не читал. Просто была проблема, и вот таким способом она у меня решилась... Нужно будет почитать...
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Разбор полётов с кодировками или приведение отличных от UTF-8 в UTF-8? Стратегия? / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]