zoukankan      html  css  js  c++  java
  • 关于十六进制 hex 转换成NSString 中文乱码问题

    今天在cocoaChina上看到有人问到,以前记得在哪儿看到过解决方法,特此标记一下:

    - (NSString *)stringFromHexString:(NSString *)hexString {  // eg. hexString = @"8c376b4c"
        
        char *myBuffer = (char *)malloc((int)[hexString length] / 2 + 1);
        bzero(myBuffer, [hexString length] / 2 + 1);
        for (int i = 0; i < [hexString length] - 1; i += 2) {
            unsigned int anInt;
            NSString * hexCharStr = [hexString substringWithRange:NSMakeRange(i, 2)];
            NSScanner * scanner = [[[NSScanner alloc] initWithString:hexCharStr] autorelease];
            [scanner scanHexInt:&anInt];
            myBuffer[i / 2] = (char)anInt;
        }
        NSString *unicodeString = [NSString stringWithCString:myBuffer encoding:NSUnicodeStringEncoding];
    //    printf("%s\n", myBuffer);
        free(myBuffer);
        
        NSString *temp1 = [unicodeString stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"];
        NSString *temp2 = [temp1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];
        NSString *temp3 = [[@"\"" stringByAppendingString:temp2] stringByAppendingString:@"\""];
        NSData *tempData = [temp3 dataUsingEncoding:NSUTF8StringEncoding];
        NSString *temp4 = [NSPropertyListSerialization propertyListFromData:tempData
                                                               mutabilityOption:NSPropertyListImmutable
                                                                         format:NULL
                                                               errorDescription:NULL];
        NSString *string = [temp4 stringByReplacingOccurrencesOfString:@"\\r\\n" withString:@"\n"];
        
        NSLog(@"-------string----%@", string); //输出 谷歌
        return string;
    }
  • 相关阅读:
    【java虚拟机】垃圾回收机制详解
    【java虚拟机】分代垃圾回收策略的基础概念
    【java虚拟机】内存分配与回收策略
    【java虚拟机】jvm内存模型
    【转】新说Mysql事务隔离级别
    【转】互联网项目中mysql应该选什么事务隔离级别
    有关PHP的字符串知识
    php的查询数据
    php练习题:投票
    php的数据访问
  • 原文地址:https://www.cnblogs.com/appwgh/p/2648798.html
Copyright © 2011-2022 走看看