cocoa - NSUTF8StringEncoding 导致文件在 TextEdit/Pages 中渲染不正确,但在 BBEdit/vi 中则不会

标签 cocoa cocoa-touch encoding nsstring uitextview

我遇到了一个奇怪的问题。每当我在 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.
  }

What happens after saving my file.  Should say I Love It with some weird diacritics

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

更奇怪的是,如果我再次保存文件而不更改文本内容,该文件将在我的 Mac 上的“快速查看和文本编辑”中正确呈现。

如有任何帮助,我们将不胜感激。

最佳答案

这是一个猜测,但这可能与缺少 byte order mark 有关吗? ?对于 UTF8,BOM 看起来像十六进制的 EF BB BF,并且应该是文件中的第一个内容。

关于cocoa - NSUTF8StringEncoding 导致文件在 TextEdit/Pages 中渲染不正确,但在 BBEdit/vi 中则不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3534729/

相关文章:

python - 将 Unicode 流重新编码为 Ascii 忽略错误

objective-c - 使用键盘控制 NSSegmentedControl

objective-c - locationServicesEnabled == YES,但 [[CLLocationMagager alloc] init] 返回 nil

database - 更改 PostgreSQL 9.1 中的编码

iphone - 在不触发 touchesCancelled 的情况下滚动 UIScrollView

objective-c - UITabBarItem finishedImageSelected 放置偏移标签栏

python - 通过 python 设置 SQLite 数据库的(默认)编码

cocoa - 将 NSData 转换为 NSString 表示失败

objective-c - 如何从项目中查找和删除未使用的类文件

macos - 当 NSCollectionView 获得或丢失项目时,如何使包含窗口/ View 调整大小?