2011-12-17 2 views
0

С cURL Я сохраняю файлы с символами UTF-8 в имени файла. Например:PHP-кодирование - UTF-8

testšć.docx

Когда я использовал mb_detect_encoding() он вернулся мне ASCII. Итак, я попытался преобразовать его с iconv из ASCII в UTF-8 и с UTF-8 в UTF-8. Ни один вариант не работал.

У кого-нибудь есть предложение, как я могу сохранить имена файлов UTF-8?

Cheers!

+0

убедитесь, что файл php закодирован d в UTF8, если вы делаете вывод данных и пытаетесь использовать utf8_encode для преобразования в правильную кодировку (http://php.net/manual/en/function.utf8-encode.php) –

+0

Показать фрагмент кода, который вызывает 'mb_detect_encoding'. Что вы называете 'mb_detect_encoding' * on * точно? Также обратите внимание, что 'mb_detect_encoding' на самом деле не является точной наукой, и вам вряд ли это нужно, если вы знаете, с какой кодировкой вы имеете дело. – deceze

+0

@Dany Khalife Я извлекаю имя файла, у которого есть символы UTF-8 с сайта. : $ h1 = $ html-> find ('h1', 0) -> plaintext; , тогда я просто использую file_put_contents, но он не сохраняется должным образом. deceze Я просто использовал его один раз, чтобы посмотреть, в каком кодированном кодированном тексте закодирован. – user1102979

ответ

1

Ваша файловая система (и операционная система) должна поддерживать кодированные имена файлов UTF-8, чтобы сохранить файлы, использующие UTF-8 в имени файла. Если они не поддерживают это, лучшим вариантом является либо преобразование их в известную транслитерацию, либо отмену (замену) символов, которые невозможно преобразовать.

+0

им любопытно узнать, какая FS или ОС не поддерживает UTF8 –

+0

[Здесь] (http: //en.wikipedia.org/wiki/Comparison_of_file_systems#Limits) - это список ограничений Wikipedia для файловой системы. – jmkeyes

+0

Короче говоря, не так много. Я мог бы полностью понять ваш вопрос. – jmkeyes

0

По аналогии с MySQL, когда ваши данные MySQL закодированы в UTF8, вы должны прочитать php через UTF8 «сообщение», так как ваши данные HTML находятся в UTF8, я думаю, что ваша проблема (у меня нет всех ваш код, чтобы знать, если им правильно), что вы не читаете его как UTF8

Попробуйте добавить эту опцию в вашем Curl конфигурации:

curl_setopt($ch, CURLOPT_ENCODING, "UTF-8"); 

Я не знаю, если это то, что вам не хватает, но в случае, если не дайте мне знать, и я обновлю свой ответ ...

Смежные вопросы