iOS读取本地txt文件为乱码的解决方法
来源:互联网 发布:4g网络接收器 编辑:程序博客网 时间:2024/06/05 05:56
在使用QLPreviewController展示TXT等文档时,Windows下生成的UTF-8格式的文件会出现中文(以及其他特殊字符)乱码的问题。
一开始以为是因为文档需要转码,在尝试多次无果后,在StackOverFlow上找到了答案,原答链接如下:QLPreviewController and UTF8 characters
解决要点在于
QLPreviewController只有在UTF16的编码下才能正确显示中文,因此我们需要在展示文件之前将文件的编码改为UTF16
需针对ANSI编码和Unicode编码分别进行解码
详细代码如下:
```objc
(id )previewController: (QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
{
NSString *filePath = _previewItem[@”filePath”];NSData *fileData = [NSData dataWithContentsOfFile:filePath];
//判断是UNICODE编码
NSString *isUNICODE = [[NSString alloc] initWithData:fileData encoding:NSUTF8StringEncoding];//还是ANSI编码
NSString *isANSI = [[NSString alloc] initWithData:fileData encoding:-2147482062];if (isUNICODE) {
NSString *retStr = [[NSString alloc]initWithCString:[isUNICODE UTF8String] encoding:NSUTF8StringEncoding];
NSData *data = [retStr dataUsingEncoding:NSUTF16StringEncoding];
[data writeToFile:filePath atomically:YES];
}
else if(isANSI){NSData *data = [isANSI dataUsingEncoding:NSUTF16StringEncoding];
[data writeToFile:filePath atomically:YES];
}
QLPreviewCustomItem *item = [[QLPreviewCustomItem alloc]initWithTitle:_previewItem[@”fileName”]
url:[NSURL fileURLWithPath:_previewItem[@"filePath"]]];
return item;
}
- iOS读取本地txt文件为乱码的解决方法
- C# 读取 TXT文件的时候中文乱码解决方法
- PHP读取TXT中文乱码的解决方法
- 读取txt出现乱码的解决方法
- 读取本地txt文件
- 读取本地TXT文件
- Java 读取本地 UTF8 txt文件乱码处理
- Java-读取本地txt文件的问题
- Linux打开txt文件乱码的解决方法
- Java中从txt文件中读取和存储内容出现乱码的解决方法
- Unity3d 读取本地txt文件
- Android 读取本地TXT文件
- java读取本地txt文件
- JAVA读取本地txt文件
- Android读取本地TXT文件
- java读取本地txt文件
- javascript 读取本地txt文件
- 读取txt的中文字符出现乱码的解决方法
- python中strip() 函数和 split() 函数的理解
- ios 用NSUserDefaults做本地化搜索记录
- 使用 RawSocket 捕获网卡/指定程序/指定端口/指定IP 数据包
- Spring 依赖注入(DI)
- iOS 软件中所有动画突然不能正常显示(系统自带的动画也成了一闪而过)
- iOS读取本地txt文件为乱码的解决方法
- postgres_fdw 使用示例
- scala变性
- JavaScript点击标题折叠文章内容
- 查看linux文件目录的大小和文件夹包含的文件数
- android应用proguard混淆打包
- Opencv_Python学习笔记--OpenCV中的GUI特性
- 01变换 二维树状数组+区间更新,单点查询 poj 2155 Matrix
- 初来乍到