My first quick solution is separe utf charts and unicode charts, like this:
NSString *string = @"%7B%27status%27%20%3A%20400%2C%20%27message%27%20%3A%20%27%u30C6%u30B9%u30C8%u30E1%u30C3%u30BB%u30FC%u30B8%27";
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"%27message%27(.*)%27" options:NSRegularExpressionCaseInsensitive error:&error];
NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@""];
NSLog(@"%@", modifiedString);
NSString *decodeString = [modifiedString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@", decodeString);
Better will be use this:
NSString *str = @"%7B%27status%27%20%3A%20400%2C%20%27message%27%20%3A%20%27%u30C6%u30B9%u30C8%u30E1%u30C3%u30BB%u30FC%u30B8%27";
str = [str stringByReplacingOccurrencesOfString:@"%u" withString:@"\\u"];
NSString *convertedStr = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@",convertedStr);
in this case is output:
{'status' : 400, 'message' : '\u30C6\u30B9\u30C8\u30E1\u30C3\u30BB\u30FC\u30B8'
in this case you must procees unicode charts .... i hope this help.