想要将此字符串“مرحباHello”保存到数据库并显示回uilabel
问题描述:
我正在寻找解决方案,我想要存储英语+阿拉伯语+表情符号字符以存储到数据库并在显示时将其恢复。想要将此字符串“مرحباHello”保存到数据库并显示回uilabel
下面是我用来支持表情符号的代码,之后没有显示阿拉伯文字。
+(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;
}
任何人都可以建议支持阿拉伯语我应该做什么改变?
在此先感谢。
答
尝试将其转换成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);
答
你必须使用支持表情图案和阿拉伯字符的编码。 ASCII不支持。
你应该使用NSUTF8StringEncoding
无处不在,你很好。
为什么你反正用ASCII?你为什么要将字符串转换为NSData,然后再转换回NSString?这没有意义。
你能举个例子吗? –
“مرحبا你好” 同样的例子,我给了问题标题也。 –
给出的解决方案,base64代码包含在ASCII中,它应该被所有类型的数据库接受,如MySql,SQLite,Sql Server等。详细信息请参见以下答案。 –