emoji编码在android

时间:2022-05-19 17:23:29 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
emoji编码在android或者pc设备没有很好的支持,所以有时候为了禁止emoji表情的输入,因为关闭不了系统emoji的键盘,那只能根据编码把emoji表情过滤掉,写了一个NSString的拓展,用来判断是不是emoji编码: @implementation NSString(Emoji)

+(BOOL)isContainsEmoji:(NSString *)string {

__block BOOL isEomji = NO;

[string enumerateSubstringsInRange:NSMakeRange(0, [string length]) options:NSStringEnumerationByComposedCharacterSequencesusingBlock: ^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {

const unichar hs = [substring characterAtIndex:0]; // surrogate pair

if (0xd800 <= hs && hs <= 0xdbff) { if (substring.length > 1) {

const unichar ls = [substring characterAtIndex:1];

const int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000; if (0x1d000 <= uc && uc <= 0x1f77f) { isEomji = YES; } }

} else if (substring.length > 1) {

const unichar ls = [substring characterAtIndex:1]; if (ls == 0x20e3) {


isEomji = YES; } } else {

// non surrogate

if (0x2100 <= hs && hs <= 0x27ff && hs != 0x263b) { isEomji = YES;

} else if (0x2B05 <= hs && hs <= 0x2b07) { isEomji = YES;

} else if (0x2934 <= hs && hs <= 0x2935) { isEomji = YES;

} else if (0x3297 <= hs && hs <= 0x3299) { isEomji = YES;

} else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50|| hs == 0x231a ) {

isEomji = YES; } } }];

return isEomji; }

这样在textviewtextfielddelegate判断一下,即可禁止输入emoji,如下:


- (BOOL)textField:(UITextField *)textField

shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

//emoji无效

if([NSString isContainsEmoji:string]) {

return NO; } }




本文来源:https://www.wddqw.com/doc/c578b27ce009581b6bd9ebd3.html