• 关于十六进制 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;
    }
  • 相关阅读:
    一行code实现ADO.NET查询结果映射至实体对象。
    傻瓜式使用AutoFac
    Asp.Net MVC中捕捉错误路由并设置默认Not Found页面。
    asp.net MVC中实现调取web api
    JavaScript_11_验证
    JavaScript_10_错误
    JavaScript_9_循环
    JavaScript_8_比较,条件语句
    JavaScript_7_运算符
    JavaScript_6_函数
  • 原文地址:https://www.cnblogs.com/appwgh/p/2648798.html
Copyright © 2020-2023  润新知