gpt4 book ai didi

iphone - 如何可靠地将未知编码的文本文件拉入 iPhone 上的 NSString 中?

转载 作者:行者123 更新时间:2023-12-03 20:10:43 25 4
gpt4 key购买 nike

这里是一些代码,我用它来将文本文件拉入名为 textViewUITextView 中。

因为我无法总是提前知道文件的编码,所以我使用方法 -stringWithContentsOfFile:usedEncoding:error:,它通过引用存储编码值。

一旦获得编码,我就会打开文件,如果出现错误,则打印出一些信息:

NSError *_error = nil; 
NSStringEncoding _textEncoding;
NSString *_contentText = [NSString stringWithContentsOfFile:[baseURL path] usedEncoding:&_textEncoding error:&_error];

if (_error) {
NSLog(@" _error: %@", [_error userInfo]);
NSLog(@" _textEncoding: %d", _textEncoding);
}

textView.text = _contentText;

在 iPhone 上,如果文件是 UTF8 编码的, TextView 将正确显示文件的内容。

在 iPhone 上,如果文件是 ASCII 编码的 (NSASCIIStringEncoding),那么我会得到一个奇怪的字符串编码值:

2010-07-23 02:57:46.786 App[9160:307]  _error: {
NSFilePath = "/var/mobile/Applications/0AD83E02-7A2A-4665-8B8F-17E03EE12B9E/Documents/A+B.txt";
}
2010-07-23 02:57:46.791 App[9160:307] _textEncoding: 805298632

对于 NSASCIIStringEncoding 我应该得到一个值 1,而不是 805298632。

不同的是,如果我通过模拟器打开文件,我会得到正确的编码值,并且 TextView 会显示 ASCII 编码文件的内容。

我认为我的语法是正确的,但我想我错过了一些可能很明显的东西。我在这里做错了什么?

最佳答案

  1. stringWithContentsOfFile:usedEncoding:error: 失败。记录错误详细信息以确定原因。
  2. 格式说明符应为%lxNSStringEncoding 是一个 NSUInteger,它是设备上的一个 unsigned long。一些枚举值是十六进制值。
  3. 文件是在什么平台上创建的?您确定编码实际上是 ASCII 吗?您需要对文件执行十六进制转储以验证编码是否有效。
  4. 尝试将 _textEncoding 初始化为 0。枚举常量从 1 开始。
  5. 添加一个防护,以在传递到 View 之前测试返回的字符串不为 nil。根据documentation如果出现错误,则返回 nil。

关于iphone - 如何可靠地将未知编码的文本文件拉入 iPhone 上的 NSString 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3317263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com