架构师视频资源:https://docs.qq.com/sheet/DWktzSnVXam5ZVk9J?c=D19A0A0
//判断是否是emoji表情
- (BOOL)isEmoji:(NSString *)string;
//实现
- (BOOL)isEmoji:(NSString *)string {
if ([string length]<2)
{
return NO;
}
static NSCharacterSet *_variationSelectors;
_variationSelectors = [NSCharacterSet characterSetWithRange:NSMakeRange(0xFE00, 16)];
if ([string rangeOfCharacterFromSet: _variationSelectors].location != NSNotFound)
{
return YES;
}
const unichar high = [string characterAtIndex:0];
// Surrogate pair (U+1D000-1F9FF)
if (0xD800 <= high && high <= 0xDBFF)
{
const unichar low = [string characterAtIndex: 1];
const int codepoint = ((high - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;
return (0x1D000 <= codepoint && codepoint <= 0x1F9FF);
// Not surrogate pair (U+2100-27BF)
}
else
{
return (0x2100 <= high && high <= 0x27BF);
}
}
//去除表情规则
// \u0020-\\u007E 标点符号,大小写字母,数字
// \u00A0-\\u00BE 特殊标点 (¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾)
// \u2E80-\\uA4CF 繁简中文,日文,韩文 彝族文字
// \uFE30-\\uFE4F 特殊标点(︴︵︶︷︸︹)
// \uFF00-\\uFFEF 日文 (オカキクケコサ)
// \u2000-\\u201f 特殊字符(‐‑‒–—―‖‗‘’‚‛“”„‟)
// 注:对照表 http://blog.csdn.net/hherima/article/details/9045765
- (NSString *)noEmoji;
- (NSString *)noEmoji {
//去除表情规则
// \u0020-\\u007E 标点符号,大小写字母,数字
// \u00A0-\\u00BE 特殊标点 (¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾)
// \u2E80-\\uA4CF 繁简中文,日文,韩文 彝族文字
// \uFE30-\\uFE4F 特殊标点(︴︵︶︷︸︹)
// \uFF00-\\uFFEF 日文 (オカキクケコサ)
// \u2000-\\u201f 特殊字符(‐‑‒–—―‖‗‘’‚‛“”„‟)
// 注:对照表 http://blog.csdn.net/hherima/article/details/9045765
NSRegularExpression* expression = [NSRegularExpression regularExpressionWithPattern:@"[^\\u0020-\\u007E\\u00A0-\\u00BE\\u2E80-\\uA4CF\\uFE30-\\uFE4F\\uFF00-\\uFFEF\\u2000-\\u201f\r\n]" options:NSRegularExpressionCaseInsensitive error:nil];
NSString* result = [expression stringByReplacingMatchesInString:self options:0 range:NSMakeRange(0, self.length) withTemplate:@""];
return result;
}
/** * 判断字符串中是否包含非法字符 *
@param content 需要判断的字符串 *
@return Yes: 包含;No: 不包含 */
- (BOOL)hasIllegalCharacter:(NSString *)content;
/** * 判断字符串中是否包含非法字符 *
@param content 需要判断的字符串 *
@return Yes: 包含;No: 不包含 */
- (BOOL)hasIllegalCharacter:(NSString *)content{
// 特殊字符
NSString *str = @"[^%@#^*&¥'~=$<>`\x22]+";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", str];
if (![emailTest evaluateWithObject:content]) {
return YES;
}
return NO;
}
声明以下均为google搜索得来,经过修改用于项目中,用作记录,如侵,则删.
后续根本性问题解决:
让后台哥哥把类型改为utf8mb4。
引用链接,以上bug全解决
https://blog.csdn.net/samHuangLiang/article/details/80677844