将未知编码的TXT文件转换为字符串

2023-12-09

如果编码类型未知,如何将纯文本 (.txt) 文件转换为字符串?

我正在开发一项功能,允许用户将 txt 文件导入到我的应用程序中。这意味着该文件可以在任意数量的应用程序中创建,使用对纯文本文件有效的各种编码中的任何一种。我的理解是这可能包括(ASCII、UTF-8、UTF-16、UTF-16BE、UTF-16LE、UTF-32、UTF-32BE、UTF-32LE 或 EBCDIC?!)

使用以下内容,事情进展顺利:

NSString *txtFileAsString = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&errorReading];

然后,用户提供了一个文件,该文件在导入时导致内容为空。我在 XCode 调试中查看了该文件,并看到 Cocoa 错误 261,NSStringEncoding=4。

我知道的:

  • 用户提供的文件是使用名为knowtes的应用程序创建的
  • 在 Mac OS X 上使用 TextEdit、TextWranger 等打开文件
  • 该文件包含“特殊字符”,例如变音符号(咆哮:为什么变音符号上的“u”没有变音符号?!)
  • 查找器信息显示:

种类:文字

  • 航站楼-I输出:

文本/纯文本;字符集=utf-16le

我猜测文件的 utf-16le 编码是关键,因为我期待 NSUTF8 文件。 我尝试使用 ASCII 作为最小公分母。它没有崩溃,但捏造了一些原始文件中不存在的字符。

NSString *txtFileAsString = [NSString stringWithContentsOfFile:path encoding:NSASCIIStringEncoding error:&errorReading];

因此,我尝试首先将文件转换为 NSData,希望它可以消除识别编码的需要。它不起作用。

    NSData *txtFileData = [NSData dataWithContentsOfFile:path];
    NSString *txtFileAsString = [[NSString alloc]initWithData:txtFileData encoding:NSUTF8StringEncoding];

这让我想到几个问题:

  1. 是否没有一种通用方法可以将纯文本文件内容(无论编码如何)转换为字符串(即最小公分母)?我相信这曾经是目的initWithContentsOfFile,不幸的是现在已被弃用。 ASCIStringEncoding 不起作用。
  2. 将 NSUTF16 编码文件转换为字符串时,我需要以不同于 NSUTF8 的方式处理它吗?
  3. 假设该文件实际上是 URF16LE,为什么以下内容建议也不工作?

    NSString *txtFileAsString = nil;
    if (path !=nil) {
      NSData *txtFileData = [NSData dataWithContentsOfFile:path];
      NSString *txtFileAsString = [[NSString alloc]initWithData:txtFileData encoding:NSASCIIStringEncoding];
    if (!txtFileAsString) {
      txtFileAsString = [[NSString alloc] initWithData:txtFileData encoding:NSUTF8StringEncoding];
    }
    if (!txtFileAsString) {
      txtFileAsString = [[NSString alloc] initWithData:txtFileData encoding:NSUTF16StringEncoding];
    }
    if (!txtFileAsString) {
      txtFileAsString = [[NSString alloc] initWithData:txtFileData encoding:NSUTF16LittleEndianStringEncoding];
    }
    if (!txtFileAsString) {
      txtFileAsString = [[NSString alloc] initWithData:txtFileData encoding:NSUTF16BigEndianStringEncoding];
    }
    if (!txtFileAsString) {
      txtFileAsString = [[NSString alloc] initWithData:txtFileData encoding:NSUTF32StringEncoding];
    }
    if (!txtFileAsString) {
      txtFileAsString = [[NSString alloc] initWithData:txtFileData encoding:NSUTF32LittleEndianStringEncoding];
    }
    if (!txtFileAsString) {
      txtFileAsString = [[NSString alloc] initWithData:txtFileData encoding:NSUTF32BigEndianStringEncoding];
    }}
    

有时stringWithContentsOfFile:usedEncoding:error:可以完成这项工作(特别是如果文件有字节顺序标记):

NSError *error;
NSStringEncoding encoding;
NSString *string = [NSString stringWithContentsOfFile:path usedEncoding:&encoding error:&error];

注意,这个演绎与usedEncoding不应与仅具有类似名称的方法混淆encoding范围。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将未知编码的TXT文件转换为字符串 的相关文章

  • 应用程序在第二次运行 nsnull 计数的循环时崩溃

    我有一个循环 第一次运行正常 但第二次循环时我得到 NSNull count unrecognized selector sent to instance 0x3a094a70 Terminating app due to uncaught
  • CoreAnimation 性能分析 - CAReplicatorLayer 与 CAShapeLayer

    我正在制作一个依赖 CoreAnimation 的应用程序 它有一个 CAReplicatorLayer 和一个 CAShapeLayer 作为子层 当进行 12 次复制 然后对路径进行动画处理 在 touchMoved 上更改它 时 一旦
  • 使用prefersLargeTitles 和 UITableView 平滑滚动

    我在使用时遇到了滚动问题prefersLargeTitles并添加了UITableView 如果我设置prefersLargeTitles在导航控制器中 其根是UITableViewController一切都很好 导航大标题的滚动方式与我们
  • 找不到导航对象。您的组件是否位于导航器屏幕内?

    在我下面的代码中 当我使用 useNavigation 时 它会给出像我的问题一样的错误 如何使用useNavigation 请任何人都可以解决此错误 错误 找不到导航对象 您的组件是否位于导航器屏幕内 我从这里跟踪了代码https rnf
  • 使用 Parse.com 上传视频

    我是解析新手 正在尝试保存视频并将其上传到云端 这是我正在使用的代码 但是当调用 didButtonAction 时 它不断收到错误 我相信问题出在将视频保存为文件时 但我不知道如何解决这个问题 先感谢您 void imagePickerC
  • 自动布局:Y 位置为两个值中的最大值

    我有一个按钮 play Button 和两个 UIView myView 1 和 myView 2 它们的位置在执行过程中可能会发生变化 我希望 playButton 的顶部比 UIView 1 的底部或 UIView 2 的底部低 10
  • 使用 JavaScript 从 URL 变量读取来加载不同的 CSS 样式表

    我试图在我的 WordPress 博客上使用两个不同的样式表 以便在通过 Web 访问页面时使用一个样式表 而在通过我们的 iOS 应用程序访问博客内容时使用另一个样式表 现在 我们将 app true 附加到来自 iOS 应用程序的 UR
  • 为什么我们在 @synchronized 块中传递 self ?

    我猜 synchronized 块不依赖于对象 而是依赖于线程 对吗 既然如此 我们为什么要传递 self 呢 synchronized是语言提供的用于创建同步作用域的构造 因为使用简单的全局共享互斥锁效率非常低 因此序列化每个单独的互斥锁
  • 应用程序图标未刷新

    我更改了新版本应用程序中的图标图像 并且我在设备中安装了旧版本应用程序 然后我安装了新版本 它在 iOS 5 中运行良好 但在 iOS 6 中 图标没有刷新 它仍然显示旧版本图标 徽标 如果没有安装旧版本应用程序 该设备在 iOS 5 和
  • Firebase 连接管理器应仅返回一个结果

    我正在关注位于以下位置的文档 https www firebase com docs ios guide offline capability html section connection state https www firebase
  • SQL Server 2005 - 字符编码问题

    我正在尝试将此值 llko 存储到 SQL Server 中的列中 该列是 nvarchar 1000 插入语句如下所示 N llko 但里面的数据仍然显示为 a llkoa 关于我可以尝试什么的任何想法 EDIT 我刚刚意识到我已经更改了
  • WebGL iOS 渲染为浮点纹理

    我正在尝试在 iOS Safari 上的 WebGL 中渲染浮点纹理 而不是在本机应用程序中 我已经设法让 iOS 读取手动 例如从 JavaScript 创建的浮点纹理 但是当我创建浮点类型的帧缓冲区并使用 GPU 渲染到其中时 它不起作
  • 如何从 NSString 中删除十六进制字符

    我面临一个与字符串中的某些十六进制值相关的问题 我需要从字符串中删除十六进制字符 The problem is when i print object it prints as BLANK line And in debug mode it
  • iPad 3 中配备 Xcode 4.2 和 Retina 的 iOS 5.1

    我有一台装有 Mac OS X Snow Leopard 的 Mac 我可以添加 iOS 5 1 吗 使用 iPad 3 的新分辨率 我们将如何处理图像 因为如果该应用程序将在 iPhone 3GS 4 和 iPad 3 中运行 我认为我们
  • UTF8/UTF16 和 Base64 在编码方面有什么区别

    In c 我们可以使用下面的类来进行编码 System Text Encoding UTF8 System Text Encoding UTF16 System Text Encoding ASCII 为什么没有System Text En
  • 如何在 Android 上的 HttpPost 中发送 unicode 字符

    我试图在我的应用程序中允许多语言支持 这会发出 HTTP post 来上传新消息 我需要做什么才能支持日语和其他非拉丁语语言 我的代码目前看起来像这样 note the msg string is a JSON message by the
  • UIImage:如何获取网站选项卡图标

    我正在开发一个 RSS 阅读器 我需要获取每个提要的图标 例如 如果我的提要是 google com 我想获取 G 图标并将其放入 UIImage 或其他内容中 关于如何实现这一目标有什么想法吗 最简单的方法是使用 Google NSStr
  • Cognito/IAM 策略和 S3 获取对象

    我正在尝试将 S3 和 Cognito 集成到我的 iOS 应用程序中 但到目前为止尚未成功 我相信该错误与我针对 Auth 和 Unauth 用户的 IAM 策略有关 所以这是我的政策 Version 2012 10 17 Stateme
  • 如何使用 afnetworking 在后台上传任务

    我正在尝试使用 AFNetworking 上传大文件 并在应用程序处于后台时继续上传 我可以很好地上传文件 但是当我尝试使用后台配置时 应用程序崩溃并显示以下堆栈跟踪 异常 EXC BAD ACCESS 代码 1 地址 0x8000001f
  • 当设置 setVisibleXRangeMaximum 时,iOS-Charts X 轴值无限重复

    我正在尝试绘制一个图表 其中 x 轴是TimeIntervalY 轴是power consumption 由于每天都会有数据 因此将有太多数据无法显示 因此 我想一次显示 5 个值 我通过设置实现了这一点self chart setVisi

随机推荐

  • MutableStateFlow 不适用于 MutableList

    这是我尝试使用的 MutableStateFlow 值 val songList MutableStateFlow
  • Maven + Spring + Hibernate:hibernate3-maven-plugin hbm2ddl 失败,原因为“由:java.lang.NullPointerException”

    由于 Spring 目前缺乏对 Hibernate 4 的支持 我不得不将 Hibernate 从版本 4 降级到版本 3 具体来说是 3 3 2 GA 并且现在项目在尝试使用 hbm2ddl 生成模式时无法构建 这个错误太模糊了 谷歌搜索
  • Spark DataSet 有效获取整行的长度大小

    我正在使用不同大小的数据集 每个数据集都有动态大小的列 对于我的应用程序 我需要知道字符的整个行长度 以估计整个行的大小 以字节或千字节为单位 整个行大小 以 KB 为单位 的结果将写入新列 private void writeMyData
  • 一次性打印多个UIWebView的内容

    我有一个 iPad 应用程序 它使用 WebViews 来显示 URL 列表 我希望能够一次性打印所有 WebView 而不用 PrintInteractionController 多次提示用户 问题是 PrintInteractionCo
  • 在 Pig 中的 ToDate(unix) 中指定时区

    在我的数据集中 我有 Unix 时间戳中的日期 我想将它们转换为 Apache Pig 中的日期时间 为此我可以使用ToDate 功能如所描述here 不过我知道我的 Unix 时间戳是 GMT UTC 但是使用转换ToDate 将导致我当
  • Python argparse 组合标志和变量

    我希望能够为我的程序指定一个选项 该选项既充当标志又充当变量 例如 我有一个名为 logging 的论点 如果未指定此参数 我希望将其设置为 false 即 action store true 但如果指定了该参数 我想做两件事 1 我想设置
  • 在android中使用本机opencv FileStorage

    我正在尝试编写一个 Android 应用程序 使用 opencv 计算关键点和描述符并存储它们 但是我在 cv FileStorage 方面遇到了麻烦 我实际上是通过文件路径抛出本机方法 相同的路径 不同的文件结尾 还用于在javaside
  • 房间持久性:错误:实体和 Pojo 必须具有可用的公共构造函数

    我正在将一个项目转换为 Kotlin 并且尝试将我的模型 也是我的实体 设为数据类 我打算使用 Moshi 转换来自 API 的 JSON 响应 Entity tableName movies data class MovieKt Prim
  • 在哪里可以找到并下载不同版本的 mscorwks.dll 和 mscordacwks.dll?

    我试图习惯使用 WinDbg 在能够获取故障转储时对其进行故障排除 但每次我这样做时 它似乎都会要求我提供不同版本的 mscorwks dll 和 mscordacwks dll 而我不这样做并不总是能够访问转储来源的机器 除了告诉最终用户
  • IOException 无法解析为类型错误

    在我的 Java 期末考试中 我们有一个关于 try catch 和 finally 调用的测试 异常 部分 当我尝试将示例代码放入 Eclipse 中时 我在 catch 和 throw 新区域中遇到错误 所有错误都显示 无法解析为类型
  • 通过主题自定义 Woocommerce 中的产品类别面包屑链接

    我正在尝试修改class wc breadcrumb php自定义我的产品页面面包屑中的产品类别链接 该文件位于 wp content plugins woocommerce includes 我尝试将子主题中的此文件复制并编辑为 wp c
  • 如何在ruby中仅在内存中创建zip文件?

    我想创建给定目录中所有 HTML 文件的 zip 文件 该 zip 文件将作为附件与目录中的其余文件一起通过电子邮件发送 到目前为止 如果我从 pony 发送任何附件是 HTML 文件 我尝试过的所有电子邮件客户端都无法阅读电子邮件 所以我
  • python中的//=有什么作用? [复制]

    这个问题在这里已经有答案了 我正在阅读http learnpythonthehardway org book ex37 html但我不明白是什么 符号确实如此 我感觉合理 a 9 a 3 a 3 gt True But a 9 a 3 a
  • 使用 igraph 中的 graph.tree 函数绘制树

    在 igraph 包的文档中有一个示例 igraph options plot layout layout reingold tilford plot graph tree 20 2 输出应将数据表示为树 但我得到的是 您显然需要指定根 l
  • 如何避免回调与 Promise 的嵌套结构? [完成的]

    我使用承诺来避免回调创建的嵌套结构 然而在这段代码中我仍然有一些嵌套 我做错了什么还是在这种情况下这是不可避免的 在这种情况下 我想检查并查看配置文件是否存在 如果不存在 我想创建它 DB getProfile id google then
  • 文章类别:加载顺序重要吗?

    我一直在网上搜索 试图找到我的问题的答案 但似乎找不到直接的答案 我在工作中经常使用文章类 但从来没有真正需要知道它们是否按顺序加载 即页面上首先出现的内容 Example div class example1 example2 examp
  • 有没有办法在 VSTS 发布管理中执行嵌套变量

    我在变量组中创建了一些具有以下名称的变量 CodeNetworkShare Dev CodeNetworkShare Test CodeNetworkShare Prod 我在发布定义中导入了这个变量组 然后我尝试了以下方法在发布定义中使用
  • 将 coxph 摘要从 R 导出到 csv

    如何将 cox proportional 危险模型的摘要从 R 导出到 csv 我通过函数 coxph 进行了测试 通过生存包 现在我想将其摘要导出到 csv 该怎么做 c lt coxph Surv x y summary c 我认为你需
  • 如何在 blazor 页面上使用 usermanager?

    你好社区我有一个问题如何使用usermanager in a blazor页面网络组装 通过注入 inject UserManager
  • 将未知编码的TXT文件转换为字符串

    如果编码类型未知 如何将纯文本 txt 文件转换为字符串 我正在开发一项功能 允许用户将 txt 文件导入到我的应用程序中 这意味着该文件可以在任意数量的应用程序中创建 使用对纯文本文件有效的各种编码中的任何一种 我的理解是这可能包括 AS