IOS 实现TXT文本自动识别编码的方法。

发布时间:2020-07-13 06:53:15 作者:zfajqp
阅读:3117
开发者专用服务器限时活动,0元免费领! 查看>>

TXT识别编码是个复杂的问题。幸好有c/c++的一个库能识别。

库的叫uchardet,可以自己去github下载。但是没有具体的使用手册什么的。小研究了下 。

把uchardet文件夹下的.h和.cpp和.tab文件全部copy到自己的应用里面。然后在要自动识别编码的地方

#include "uchardet.h"

如下代码实现。

//

//  EBOOKReadViewController.m

//  EBOOk

//

//  Created by on 13-12-18.

//  Copyright (c) 2013. All rights reserved.

//

#import "EBOOKReadViewController.h"

#include "uchardet.h"

#define NUMBER_OF_SAMPLES   (2048)

@interfaceEBOOKReadViewController ()

{

constchar *encode;

}

@end

@implementation EBOOKReadViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

self = [superinitWithNibName:nibNameOrNil bundle:nibBundleOrNil];

if (self) {

   }

}

- (void)viewDidLoad

{

   [superviewDidLoad];

NSString *path=[[NSBundlemainBundle] pathForResource:@"五界至尊" ofType:@"txt"];

int result=[selfhaveTextBianMa:[path UTF8String]];

CFStringEncoding cfEncode = 0;

if (result==0) {

if ([encodeStr isEqualToString:@"gb18030"]) {

           cfEncode= kCFStringEncodingGB_18030_2000;

       }elseif([encodeStr isEqualToString:@"Big5"]){

           cfEncode= kCFStringEncodingBig5;

       }elseif([encodeStr isEqualToString:@"UTF-8"]){

           cfEncode= kCFStringEncodingUTF8;

       }elseif([encodeStr isEqualToString:@"Shift_JIS"]){

           cfEncode= kCFStringEncodingShiftJIS;

       }elseif([encodeStr isEqualToString:@"windows-1252"]){

           cfEncode= kCFStringEncodingWindowsLatin1;

       }elseif([encodeStr isEqualToString:@"x-euc-tw"]){

           cfEncode= kCFStringEncodingEUC_TW;

       }elseif([encodeStr isEqualToString:@"EUC-KR"]){

           cfEncode= kCFStringEncodingEUC_KR;

       }elseif([encodeStr isEqualToString:@"EUC-JP"]){

           cfEncode= kCFStringEncodingEUC_JP;

       }

   }

NSError *err;

NSString *st=[str substringToIndex:1000];

self.txtView.text=st;

}

-(int)haveTextBianMa:(constchar*)strTxtPath{

FILE* file;

size_t len;

   file = fopen(strTxtPath, "rt");

if (file==NULL) {

printf("文件打开失败!\n");

return1;

   }

   len = fread(buf, sizeof(char), NUMBER_OF_SAMPLES, file);

fclose(file);

   ud = uchardet_new();

   {

printf("分析编码失败!\n");

return -1;

   }

return0;

}

- (void)didReceiveMemoryWarning

{

   [superdidReceiveMemoryWarning];

}

@end

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:
  1. 24. iOS基本语法
  2. iOS开发-文件管理

开发者交流群:

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

ios 编码 txt

上一篇:解析Exception和C#处理Exception的常用方法总结

下一篇:代码练习-购物车

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》
开发者交流群×