Mac与PC文本编码

MrD*_*anA 1 macos utf-8 character-encoding

当您导出音乐库时,我已经注意到这与iTunes有所不同.

我有一首带有é的歌曲(也就是说,一个带有尖锐口音的小拉丁语)当我在Windows中导出库时,它会被编码为%C3%A9,但是当我从Mac导出库时,正常的'e '打印,然后是%CC%81.

例:

Song Name: Héllo World
Windows Export: H%C3%A9llo World
Mac Export: He%CC%81llo World
Run Code Online (Sandbox Code Playgroud)

这对我正在制作的程序非常重要,在Windows版本中,我解码编码,但现在如果文件来自Mac,则无法正常工作.

那为什么会有这种差异呢?有没有可以看到差异的地方,看看Mac编码是什么?可能有一个Object-C例程来解码这些字符串吗?

谢谢.

dec*_*eze 6

C3A9是字符é的UTF-8编码.
CC81是COMBINING ACUTE ACCENT字符(U + 0301)的UTF-8编码.

"e"后跟COMBINING ACUTE ACCENT组合成角色"é".
这两种只是不同形式的Unicode规范化.

为什么一个iTunes更喜欢一个而不是另一个我不知道,没有固有的理由这样做.

  • 我不认为iTunes更喜欢; 毫无疑问,底层操作系统同样可以理解,但是当他们必须选择一个或另一个输出时,微软采用了一种方式而苹果采用了另一种方式. (3认同)
  • 我不知道Windows,但Mac文件系统(HFS +)坚持分解形式("e"+组合重音),所以iTunes的作用并不重要(好吧,除非它以某种方式绕过文件系统代码.. .) (3认同)