我正在寻找解决方案,我想存储英文+阿拉伯语+表情符号字符存储到数据库并在显示时将其检索回来。
下面是我用来支持表情符号的代码,之后没有显示阿拉伯文字。
+(NSString *)emojiToSave:(NSString *)str
{
NSData *dataForEmoji = [str dataUsingEncoding:NSNonLossyASCIIStringEncoding];
NSString *encodevalue = [[NSString alloc]initWithData:dataForEmoji encoding:NSUTF8StringEncoding];
return encodevalue;
}
+(NSString *)emojiToDisplay:(NSString *)str
{
NSData *msgData = [str dataUsingEncoding:NSUTF8StringEncoding];
NSString *goodMsg = [[NSString alloc] initWithData:msgData encoding:NSNonLossyASCIIStringEncoding];
return goodMsg;
}
任何人都可以建议支持阿拉伯语我应该做些什么改变?
提前致谢。
答案 0 :(得分:1)
尝试将其转换为base64代码,然后将base64代码插入数据库:
//Original string to base64 string
NSString *emojiString = @"مرحبا Hello";
NSData *emojiData = [emojiString dataUsingEncoding:NSUTF8StringEncoding];
NSString *base64String = [emojiData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
//Base64 string to original string
NSData *base64Data = [[NSData alloc] initWithBase64EncodedString:base64String options:NSDataBase64DecodingIgnoreUnknownCharacters];
NSString *originalString =[[NSString alloc] initWithData:base64Data encoding:NSUTF8StringEncoding];
NSLog(@"Result: %@",originalString);
答案 1 :(得分:1)
您必须使用支持表情符号和阿拉伯字符的编码。 ASCII不支持。
你应该到处使用NSUTF8StringEncoding
,你没事。
为什么要使用ASCII呢?为什么要将字符串转换为NSData,然后再将其转换回NSString?这没有意义。