2016-10-20 80 views
9

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

+3

你试过了吗?它有用吗? – rmaddy

+0

从理论上讲,整个中文“字母”应该可行......但作为一个非口语/写作/阅读的非中国人来说,这是一项庞大的任务。然后还有其他语言的问题......我也不知道。所以,不,我没有尝试过。我无法进行详尽的(或准确的)测试。我希望得到一个权威的参考资料或来自某人知道的答案。 – Confused

+0

我假设,或许是错误的,苹果一贯支持unicode和本地化,他们的文件系统完全有能力,这意味着他们支持所有语言和所有字符集。但是我不想依赖这个假设,如果没有来自一个对这些问题更为了解的来源的某种确定性。这几乎是除我之外的任何人。 – Confused

回答

1

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

这些规则分布在Apple Technote 1150的几个部分。

的重要的考虑是:

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

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

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

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

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