проблема кодировки имени файла

Я получаю файл с фарерским именем и пытаюсь сохранить его в сценарии PHP:

2010_08_Útflutningur.xls

В Ubuntu 10.04 LTS сохраняет его как:

2010_08_�tflutningur.xls (invalid encoding)

I Я установил и запустил utf8-migration-tool, но безрезультатно.

Это ошибка Ubuntu, которую я могу исправить, или мне просто нужно отказаться и изменить имя в php?

Есть ли документ, в котором указано, какая кодировка является приемлемой для имени файла в Ubuntu, или Каковы спецификации кодирования?

Спасибо

9
задан 21 January 2014 в 00:07

2 ответа

По умолчанию Ubuntu использует UTF-8 для имен файлов. Большинство современных дистрибутивов Linux и многие другие операционные системы делают это (Windows / NTFS - самое известное исключение с UTF-16).

Чтобы исправить файлы, имена которых имеют неправильную кодировку, например, ту, которую вы показываете, вы можете попробовать использовать nautilus-filename-repairer

sudo apt-get install nautilus-filename-repairer

Вы можете использовать PHP iconv функции для преобразования строк (имен файлов) из одной кодировки в другую. Конечно, для этого необходимо знать, в какой кодировке они находятся.

Чтобы получить правильно закодированные имена файлов от клиента, вы можете попробовать методику, объясненную eswald.

0
ответ дан 21 January 2014 в 00:07

Это похоже на проблему кодирования. К сожалению, PHP нуждается в некоторой выдержке, когда дело доходит до кодирования, потому что его строки по умолчанию однобайтовые. Если вы создаете имя файла в PHP, utf8_encode() должно быть полезно; заметьте, однако, что он принимает кодировку ISO-8859-1 для ввода.

С другой стороны, если вы используете имя файла, отправленное клиентом, возможно, вы можете попросить клиента сделать кодировку для вас. Это делается с помощью атрибута accept-charset тега <form> и / или путем установки кодировки страницы, на которой находится форма. Некоторые клиенты могут использовать один или другой, поэтому для достижения наилучших результатов используйте UTF-8 для каждого.

0
ответ дан 21 January 2014 в 00:07

Другие вопросы по тегам:

Похожие вопросы: