iOS中的Unicode文件名

时间:2016-10-20 23:32:40

标签: ios unicode filenames

是否可以在iOS中的资产(图像)文件名中使用全部(比方说)中文?如果没有,文件名,字符串搜索和其他文件处理活动支持哪些大语言部分?

2 个答案:

答案 0 :(得分:4)

iOS和Mac OS目前使用HFS+ filesystem,它支持文件名中的完整Unicode。这基本上意味着任何角色,包括中文和其他人类语言。文件系统最多允许255个字符,对于大多数语言,这些字符大约为255个代码点。 (我看到一个注释,长度是基于UTF16编码的字符。有些字符需要超过16位进行编码,如表情符号,你也可以使用,但你将允许更少的字符。)

iOS上的文件API(NSFileManager等)应该适应Unicode字符串而无需任何额外的工作。请注意,Unicode序列是以特定方式规范化的:例如é字符可以在Unicode中以多种不同的方式表示,但将以标准化方式作为文件名进行分解。

最重要的是,您可以随意使用Unicode字符串作为文件名,只要它们的长度合理。因为超长的Unicode名称会以一种稍微不可预测的方式开始运行长度问题(实际上只是复杂且不需要计算),所以你应该设置一些理智的自我长度限制。

APFS是Apple正在开发的下一代文件系统,很快就会出现在iOS上。我找不到关于文件名编码的信息,但它是一个公平的假设,它将支持HFS +支持的任何内容,如果不是更多的话。

答案 1 :(得分:1)

iOS文件系统使用区分大小写的HFSX,它是HFS Plus的变体,对文件名和字符编码使用相同的规则。

这些规则在Apple Technote 1150的几个部分中列出。

重要的考虑因素是:

  • 每个文件或文件夹名称最多可使用255个16位Unicode字符,如Technote 1150的HFS Plus Names部分所述。
  • 基础级别的文件系统使用Unicode v2.0(这是固定的),字符串必须以完全分解的规范顺序存储。这排除了使用某些“等效形式” - 即它们必须转换为分解形式。这在技术说明1150的Unicode Subtleties部分中有详细描述。本节详细介绍了其他问题,应仔细阅读。
  • 可在此Decomposition Table中找到非法字符列表。
  • 冒号字符“:”用作目录分隔符,在文件和文件夹名称中无效。