如我上一篇文章记录,我加了打开其他APPtxt文件的小功能,紧接着碰到新问题了,我在测试过程中发现用户上传的TXT编码格式很多不单单是utf-8和gb2312,针对TXT文档进行解码,我一共经历过两个阶段,如下

1.通过循环 解码不为空就返回字符串

  NSArray *encodings = @[
@(NSUTF8StringEncoding),
@(0x80000632),
@(0x80000631),
@(kCFStringEncodingGB_2312_80),
@(kCFStringEncodingHZ_GB_2312),
@(kCFStringEncodingMacChineseSimp),
@(kCFStringEncodingDOSChineseSimplif),
@(kCFStringEncodingGB_18030_2000),
@(NSUTF16StringEncoding),
@(NSUTF16LittleEndianStringEncoding),
@(NSUTF16BigEndianStringEncoding),
@(NSUTF32StringEncoding),
@(NSUTF32LittleEndianStringEncoding),
@(NSUTF32BigEndianStringEncoding)
]; NSString *result = nil;
for (NSInteger i = 0; i < encodings.count; i++) {
unsigned int encoding = [encodings[i] unsignedIntValue];
NSError *error = nil;
NSString *content = [NSString stringWithContentsOfFile:filePath encoding:CFStringConvertEncodingToNSStringEncoding(encoding) error:&error];
if (!error && !TJIsEmptyObject(content)) {
result = content;
break;
}
}
return result;

此版本对于代码会碰到 编码成功 但是会是乱码的情况。

2.第二阶段 通过encodingOptions 进行处理

stringEncodingForData: encodingOptions: convertedString: usedLossyConversion 会自动挑选编码数组内合适的编码对字符串进行处理,目前尚未发现问题

    NSArray *encodings = @[
@(NSUTF8StringEncoding),
@(0x80000632),
@(0x80000631),
@(CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_2312_80)),
@(CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingHZ_GB_2312)),
@(CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingMacChineseSimp)),
@(CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingDOSChineseSimplif)),
@(CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000)),
@(NSUTF16StringEncoding),
@(NSUTF16LittleEndianStringEncoding),
@(NSUTF16BigEndianStringEncoding),
@(NSUTF32StringEncoding),
@(NSUTF32LittleEndianStringEncoding),
@(NSUTF32BigEndianStringEncoding)
]; NSData * data = [NSData dataWithContentsOfFile:filePath];
NSString * chapterContent = @"";
BOOL lossy = NO;
[NSString stringEncodingForData:data
encodingOptions:@{NSStringEncodingDetectionSuggestedEncodingsKey:encodings}
convertedString:&chapterContent usedLossyConversion:&lossy]; return chapterContent;

附上APP地址: 一阅阅读

有想看小说的小伙伴可以试下 支持换源 支持自定义书源

iOS 针对txt文档进行解码的更多相关文章

  1. WebService 实现BS环境与BS环境传递参数,根据参数生成txt文档

    客户端: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Client.as ...

  2. 用C++向一个txt文档中写数据

    bool CMaked::WriteFileMake(CString filePath, const char *isChange) { ofstream file; //filePath为该txt文 ...

  3. C# 将内容写入txt文档

    <1>  FileStream fs = new FileStream(@"D:\text.txt", FileMode.Append); StreamWriter s ...

  4. QTP操作txt文档

    QTP可以在txt文件(文本文件中读取数据) 首先创造一个文档对象 set fso = createObject("scripting.filesystemobject") 然后用 ...

  5. 利用IDL将一个txt文档拆分为多个

    测试.txt文档,每47行的格式相同,通过代码每47行存为一个txt,txt文档命名为其第一行数据. 代码如下: file='G:\data\测试.txt' openr,lun,file,/Get_L ...

  6. 用matlab查找txt文档中的关键字,并把关键字后面的数据存到起来用matlab处理

    用matlab查找txt文档中的关键字,并把关键字后面的数据存到起来用matlab处理 我测了一组数据存到txt文件中,是个WIFI信号强度文档,里面有我们需要得到的数据,有没用的数据,想用matla ...

  7. 将txt文档按行分割

    昨天遇到了一个需求,需要将txt文档按行分割,并指定了行数, 最近在用python,就在网上搜了一下,在参考了http://blog.csdn.net/zhang_red/article/detail ...

  8. 一个简易的Python爬虫,将爬取到的数据写入txt文档中

    代码如下: import requests import re import os #url url = "http://wiki.akbfun48.com/index.php?title= ...

  9. 提取一个txt 文档中含指定字符串的所有行

    将一个txt 文档中含指定字符串内容的所有行提取出来并保存至新的txt文档中 例如,要提取 1.txt 中所有包含”aaa” 的行的内容 只需在此文件夹中新建一个bat文件,输入以下代码,双击运行,便 ...

随机推荐

  1. SecureCRT自动保存日志设置

    SecureCRT自动保存日志设置原创杭州_燕十三 最后发布于2017-03-26 22:00:08 阅读数 24731 收藏展开 嵌入式开发经常由于无法debug而只能使用串口打印日志的方式调试代码 ...

  2. tail -n 10 /etc/passwd

    # tail -n 10 /etc/passwdrpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologinchrony:x:992:987::/ ...

  3. debian配置---->/etc/apt/sources.list apt基本源设置指南

    yum或apt基本源设置指南   关于: 管理Linux服务器的运维或开发人员经常需要安装软件,最常用方式应该是通过Linux系统提供的包管理工具来在线安装,比如centos的yum,ubuntu或d ...

  4. 027. Python面向对象的__init__方法

    __init__魔术方法(构造方法) 触发时机:实例化对象,初始化的时候触发 功能:为对象添加成员 参数:参数不固定,至少一个self参数 返回值:无 基本用法,至少含有一个参数 class MyCl ...

  5. stm32中关于NVIC_SetVectorTable函数使用的疑惑与理解

    [转载]2017年12月4日14:48:29 先描述下这几天碰到的一个奇怪的问题: 一个基于stm32的工程中使用到了IAP编程,其中boot空间预留长度为0x6100,实际boot的bin文件大小为 ...

  6. 10.14 ssh:安全地远程登录主机

    ssh命令 是openssh套件中的客户端连接工具,可以使用ssh加密协议实现安全的远程登录服务器,实现对服务器的远程管理,Windows中的替代工具为Xshell.putty.SecureCRT等. ...

  7. Jmeter+Ant+Jenkins接口自动化框架

    最近应公司要求,搭建一套接口自动化环境.看到通知邮件,没有多想就确定了Jmeter路线.可能有些人会 说,为啥不用python,相对而言高大上一些.因为公司内部现在项目有用到Jmeter,正好可以结合 ...

  8. F5 api接口开发实战手册(二)

    F5 rest api 各对象使用方式详解 本篇文章介绍rest api接口下Collection.Resource.Subcollections.SubResource的各种使用方法.如果您不了解这 ...

  9. arm,asic,dsp,fpga,mcu,soc各自的特点

    arm,asic,dsp,fpga,mcu,soc各自的特点 人工智能受到越来越多的关注,许多公司正在积极开发能实现移动端人工智能的硬件,尤其是能够结合未来的物联网应用,对于移动端人工智能硬件的实现方 ...

  10. onnx算子大全

    本文通过此脚本从def文件自动生成.不要直接修改,而是编辑算子定义. 对于算子输入/输出的可辩别的,它可以是可辩别的.不可辩别的或未定义的.如果未指定变量的可辩别的,则该变量具有未定义的可辩别的. a ...