纠结的gb2312解码问题,终于曲线解决
来源:互联网 发布:路线规划软件 编辑:程序博客网 时间:2024/05/17 08:37
-(void)startRequest{ NSString *message = @"http://www.laiwangbiaoju.com"; NSURL *url = [NSURL URLWithString:[message URLEncodedString]]; ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; [request setDelegate:self]; [SVProgressHUD showWithStatus:@"加载中..."]; [request startAsynchronous];}-(int)indexByValue:(NSString *)str{ //使用NSMutableString类,它可以实现追加 NSMutableString *value = [[NSMutableString alloc] initWithFormat:@""]; NSString *colum2 = @""; int j = 0; //遍历出下标值 for(int i=1;i<[str length];i++){ NSString *colum1 = [str substringFromIndex:i]; [value appendString:colum2]; colum2 = [colum1 substringToIndex:1]; if([colum2 isEqualToString:@","]){ j = [value intValue]; break; } } return j; }-(NSString *)str:(NSString *)str value1:(NSString *)value1 value2:(NSString *)value2{ //i:左边匹配字符串在str中的下标 int i; //j:右边匹配字符串在str1中的下标 int j; //该类可以通过value1匹配字符串 NSRange range1 = [str rangeOfString:value1]; //判断range1是否匹配到字符串 if(range1.length>0){ //把其转换为NSString NSString *result1 = NSStringFromRange(range1); i = [self indexByValue:result1]; //原因:加上匹配字符串的长度从而获得正确的下标 i = i+[value1 length]; } //通过下标,删除下标以前的字符 NSString *str1 = [str substringFromIndex:i]; NSRange range2 = [str1 rangeOfString:value2]; if(range2.length>0){ NSString *result2 = NSStringFromRange(range2); j = [self indexByValue:result2]; } NSString *str2 = [str1 substringToIndex:j]; return str2; }-(void)requestFinished:(ASIHTTPRequest *)request{ NSString *data = [request responseString]; //NSLog(@"--------------------------------------------------------"); NSLog(@"--data---%@",data); NSString* str = [self str:data value1:@"<p class=\"title\">" value2:@"</p>"]; NSLog(@"--------------------------------------------------------"); NSLog(@"--str---%@",str); NSData *htmlDataUTF8 = [str dataUsingEncoding:NSUTF8StringEncoding]; //NSLog(@"htmlDataUTF8,%@",htmlDataUTF8); NSLog(@"--------------------------------"); TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData:htmlDataUTF8]; NSString *xpathQuery1 = [[NSString alloc] initWithFormat:@"//a"]; NSArray *elements1 = [xpathParser searchWithXPathQuery:xpathQuery1]; NSString *tmp; for (TFHppleElement * element in elements1) { tmp = [element text]; NSLog(@"tmp %@",tmp); if(tmp != nil) [key addObject:tmp]; } [SVProgressHUD showSuccessWithStatus:@"加载完成"];}-(void)requestFailed:(ASIHTTPRequest *)request{ NSError *error = [request error]; NSLog(@"error %@",[error localizedDescription]); UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"注意" message:@"网络连接失败" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil]; [alertView show];}- (void)viewDidLoad{ [super viewDidLoad]; key = [[NSMutableArray alloc] initWithCapacity:0]; [self startRequest];// Do any additional setup after loading the view, typically from a nib.}
直接贴代码:
0 0
- 纠结的gb2312解码问题,终于曲线解决
- 终于解决了 .NET 2.0 的URL解码问题
- S3C6410 硬件JPEG解码无关代码影响解码问题终于得以解决
- gb2312和UTF8的解码
- 终于感受到前所未有的痛苦纠结感
- 解决Visual Studio2008编写C++很纠结的一个问题
- 解决img链接有边框的问题,以前一直纠结。。。。。
- 一个纠结的问题
- 纠结的一个问题
- 纠结的小问题
- 纠结的小问题
- 纠结的问题整理
- 终于解决昨天的问题了
- ruby的奇怪问题~~~终于解决了.!
- FreeTextBox的问题终于解决了
- 终于解决了liferay的缓存问题!
- 终于解决了liferay的缓存问题!
- 终于解决了NHibernate的排序问题
- 似乎很难过
- varnish3 yum安装介绍
- 搜狗推微信公众平台搜索 可搜公众号与文章
- 中小企业web集群方案 haproxy+varnish+LNMP+memcached配置
- VS中VC控制台程序结束后暂停
- 纠结的gb2312解码问题,终于曲线解决
- 将PHP作为Shell脚本语言使用
- Asp.net Razor, Syntax error - onclick event parameter
- [LeetCode13]Roman to Integer
- Xcode 6 beta下载地址
- Android手机通过wifi进行数据传输(三)
- varnish指南
- 第2次实验——算法基本功 与 综合思考
- ios 编程: ipad 和 iphone开发中使用 UIWebView 来播放视频的时候,在页面切换时 停止播放