Внутренне наше PHP-приложение использует UTF-8, и мы выполняем обработку файлов .csv и файлов с фиксированной шириной (текст). Мы написали несколько хороших библиотек для работы с этими файлами (по сути, классы).
Недавно мы добавили возможность для администраторов загружать файлы этих типов, чтобы они могли обрабатываться и быстро сталкиваться с проблемами в разных ОС. Вскоре мы поняли, что считываемые файлы имеют различную кодировку для нашего приложения (например, Windows-1252 или ISO-8859).
Поскольку невозможно контролировать, какую кодировку файлов выдают нам, у меня вопрос; Каков наилучший способ обработки загруженных текстовых файлов различных кодировок? Я могу думать о двух решениях в настоящее время:
- Когда файл получен, определите его кодировку и преобразуйте его в UTF-8, затем повторно сохраните его. Остальная часть системы должна быть осведомлена только о UTF-8 и может игнорировать проблемы «кодирования».
- Измените библиотеку csv / fixed width, чтобы они сами стали кодировать
Я также подумал о плюсах и минусах этих тоже:
- Преобразование входных данных уменьшает размер остальных библиотек и уменьшает дублирование, однако с точки зрения обработки это представляется расточительным
- Сделать библиотеки внутренне осведомленными - кажется, что это требует больше кода, но может быть быстрее
Мысли, пожалуйста?
Редактировать: Мне действительно интересно знать, где применять, архитектурно, кодирование / преобразование символов должно происходить - это в точке ввода или во время использования файлов?