【问题标题】:TextEdit not recognizing EncodingTextEdit 无法识别编码
【发布时间】:2011-01-08 13:37:13
【问题描述】:

我正在将字符串写入文件,如下所示:

NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *path = [docsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.txt", nameOfFile]];

[fileString writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:NULL];

由于某种原因,TextEdit 无法识别NSUTF8StringEncoding。我怎样才能确保它确实如此?

不胜感激,费边

【问题讨论】:

  • 您没有显示 nameOfFile 初始化,但假设这是正确的,应该可以工作。转到终端并执行cat filename.txt 以查看文件中有真实数据,并检查TextEdit 的首选项可能文件打开编码等不正确?也尝试传递一个 NSError 对象而不是 NULL 可能有错误;)
  • @nacho4d 里面完全有数据:) 我什至检查了xattr -l file.txtcom.apple.TextEncoding 设置为utf-8

标签: iphone objective-c utf-8 nsstring


【解决方案1】:

我刚刚重新创建了你的代码,它对我来说很好用。 TextEdit 可以很好地读取文件。

#import <Cocoa/Cocoa.h>

int main(int argc, char *argv[])
{
  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

  NSString *fileString = @"Blah blah.";
  NSString *nameOfFile = @"blah";
  NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
  NSString *path = [docsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.txt", nameOfFile]];
  printf("fileString:\n%s\n", [fileString UTF8String]);
  printf("docsDirectory:\n%s\n", [docsDirectory UTF8String]);
  printf("path:\n%s\n", [path UTF8String]);
  /*
  fileString:
  Blah blah.
  docsDirectory:
  /Users/daniel/Documents
  path:
  /Users/daniel/Documents/blah.txt
  */
  [fileString writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:NULL];
  [pool release];
  return 0;
}

我唯一能想到的是您的 TextEdit 首选项,这是我的:

【讨论】:

  • 能否在字符串中加入一些特殊字符,例如öäü?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多