cocoa – NSUTF8StringEncoding导致文件在TextEdit / Pages中不正确地呈现,但不是BBEdit / vi

我遇到了一个奇怪的问题.每当我在iOS应用程序中创建一个新的文本文件时,我将其编码设置为NSUTF8StringEncoding.如果我编辑文件并输入任何带有变音符号的字符并保存更改,则变音符号会在某些应用程序(如BBEdit,TextMate,cat和vi)中正确呈现,但在其他应用程序(如TextEdit,Quick Look和Pages)中则无法呈现.

我正在使用以下代码将UITextView的内容保存到普通的txt文件.

  NSError *error;
  NSString *dataString = self.textView.text;
  BOOL savedChanges = [dataString writeToFile:fullPath atomically:YES encoding:NSUTF8Encoding error:&error]; 
  if (!savedChanges)
  {
    // Pop up an alert saying something went wrong.
  }

unix file命令报告保存的文件确实是“UTF-8 Unicode文本,没有行终止符”

甚至更奇怪的是如果我在不改变文本内容的情况下再次保存文件,则文件将在Quick Look& Mac上的TextEdit.

任何帮助,将不胜感激.

最佳答案 这是一个猜测,但它可能与缺少
byte order mark有关吗?对于UTF8,BOM看起来像十六进制的EF BB BF,应该是文件中的第一件事.

点赞