我遇到了一个奇怪的问题。每当我在 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 文本,没有行终止符”
更奇怪的是,如果我再次保存文件而不更改文本内容,该文件将在我的 Mac 上的“快速查看和文本编辑”中正确呈现。
如有任何帮助,我们将不胜感激。
最佳答案
这是一个猜测,但这可能与缺少 byte order mark 有关吗? ?对于 UTF8,BOM 看起来像十六进制的 EF BB BF
,并且应该是文件中的第一个内容。
关于cocoa - NSUTF8StringEncoding 导致文件在 TextEdit/Pages 中渲染不正确,但在 BBEdit/vi 中则不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3534729/