Имена файлов Unicode в iOS

можно ли использовать весь спектр (скажем) китайского языка в именах файлов активов (изображений) в iOS? Если нет, то какие части больших языков поддерживаются в именах файлов, поиске строк и других действиях по обработке файлов?

2 ответов


файловая система iOS использует регистр hfsx, который является вариантом HFS Plus и использует те же правила для имен файлов и кодировок символов.

эти правила изложены в нескольких разделах Apple Technote 1150.

важные соображения:

  • вы можете использовать до 255 16-битных символов Unicode в имени файла или папки, как описано в HFS плюс имена раздел Technote 1150.
  • файловая система на базовом уровне использует Unicode v2.0 (это фиксировано) и строки должны храниться в полностью разложенном каноническом порядке. Это исключает использование некоторых "эквивалентных форм", т. е. они должны быть преобразованы в разложенную форму. Это подробно описано в Unicode Тонкости раздел Technote 1150. В этом разделе подробно рассматриваются другие вопросы, и его следует внимательно прочитать.
  • список запрещенных символов можно найти в этом Разложение Таблице.
  • символ двоеточия ': ' используется в качестве разделителя каталогов и недопустим в именах файлов и папок.

iOS и Mac OS в настоящее время используют HFS + файловая система, который поддерживает полный Unicode в именах файлов. Это означает практически любой символ, включая китайский и другие человеческие языки. Файловая система позволяет использовать до 255 символов, которая для большинства языков составляет около 255 кодовых точек. (Я вижу примечание, что длина основана на символах, закодированных в UTF16. Есть символы, которые требуют более 16 бит для кодирования, например emoji, которые вы также можете использовать, но у вас будет меньше символов допустимый.)

файловые API на iOS (NSFileManager и т. д.) должны содержать строки Unicode без дополнительной работы. Обратите внимание, что последовательности Unicode канонизированы определенным образом: например,é символ может быть представлен несколькими различными способами в Unicode, но будет разложен стандартизированным способом как имя файла.

суть в том, что вы можете свободно использовать строки Unicode в качестве имен файлов, если они имеют разумную длину. Потому что сверхдлинные имена Unicode начнут работать с проблемами длины немного непредсказуемым образом (действительно просто сложно и ненужно вычислять), вы, вероятно, должны установить некоторые разумные ограничения длины.

APFS-это файловая система следующего поколения, которую разрабатывает Apple, и скоро появится в iOS. Я не могу найти информацию о кодировке имени файла, но это справедливое предположение, что он будет поддерживать все, что поддерживает HFS+, если не больше.