Я не вижу, что Silverlight становится уничтожителем Flash в ближайшее время. Однако Silverlight действительно обеспечивает фантастическую модель развертывания для приложений WPF. Я ожидаю видеть больше приложений направления деятельности, записанных для Silverlight, чем сумма содержания Silverlight в общедоступном направлении с веб-сайтами.
Просто urlencode
желаемая строка в качестве имени файла. Все символы, возвращаемые из urlencode
, действительны в именах файлов (NTFS / HFS / UNIX), то вы можете просто urldecode
вернуть имена файлов в UTF-8 (или в любой другой кодировке, в которой они были).
Предостережения (все применимы и к решениям ниже):
glob
или повторным открытием отдельного файла. scandir
или аналогичные функции для альфа-сортировка. Вы должны urldecode
имена файлов, а затем использовать алгоритм сортировки с учетом UTF-8 (и сопоставлений). Ниже приведены менее привлекательные решения, более сложные и с большим количеством предостережений.
] В Windows оболочка файловой системы PHP ожидает и возвращает строки ISO-8859-1 для имен файлов / каталогов. Это дает вам два варианта:
Свободно использовать UTF-8 в именах файлов, но имейте в виду, что символы, отличные от ASCII, будут отображаться некорректно вне PHP. Символ UTF-8, отличный от ASCII, будет сохранен как несколько одиночных ISO-8859-1 символов. Например, -
будет отображаться как ó
в проводнике Windows.
Ограничьте имена файлов / каталогов до символов, представленных в ISO-8859-1 . На практике вы Я передам ваши строки UTF-8 через utf8_decode
перед их использованием в функциях файловой системы, а записи scandir
передадут вам через utf8_encode
, чтобы получить исходные имена файлов в UTF -8.
Множество предостережений!
mb_convert_encoding
вместо utf8_decode
. Этот кошмар - вот почему вы вероятно, следует просто транслитерировать для создания имен файлов.
и передайте записи scandir
через utf8_encode
, чтобы получить исходные имена файлов в UTF-8.
Изобилие предостережений!
mb_convert_encoding
вместо utf8_decode
. Этот кошмар - вот почему вы вероятно, следует просто транслитерировать для создания имен файлов.
и передайте записи scandir
через utf8_encode
, чтобы получить исходные имена файлов в UTF-8.
Изобилие предостережений!
mb_convert_encoding
вместо utf8_decode
. Этот кошмар - то, почему вы вероятно, следует просто транслитерировать для создания имен файлов.
mb_convert_encoding
вместо utf8_decode
. Этот кошмар - вот почему вы вероятно, следует просто транслитерировать для создания имен файлов.
mb_convert_encoding
вместо utf8_decode
. Этот кошмар - вот почему вы вероятно, следует просто транслитерировать для создания имен файлов.
The problem is that Windows uses utf-16 for filesystem strings, whereas Linux and others use different character sets, but often utf-8. You provided a utf-8 string, but this is interpreted as another 8-bit character set encoding in Windows, maybe Latin-1, and then the non-ascii character, which is encoded with 2 bytes in utf-8, is handled as if it was 2 characters in Windows.
A normal solution is to keep your source code 100% in ascii, and to have strings somewhere else.