朋友们 知道cocosd-lua 如何过滤emoji表情吗

android 5.0以上的设备,游戏中一旦输入emoji表情之后,显示就会闪退。

遇到的朋友们,过来say hi

我直接用2.x版本的游戏也遇到过这个问题,直接重utf8编码着手,把中文、日文、韩文以及英文及标点以外的字符全部屏蔽了;
方法:遍历玩家输入的字符串,获取每一个字的Unicode值,把非法的Unicode值全部屏蔽

我觉得应该建议cocos2d官方加入到遇到不能正常显示的字的时候直接用黑框框替代的功能,这样总比直接奔溃要好

能贴下代码吗 怎么遍历玩家输入的字符串,获取每一个字的Unicode值,把非法的Unicode值全部屏蔽

java层 屏蔽掉。

我是直接在java那边传入的时候就做判断,可以解决

屏蔽? 我来个去,我想正常显示。 IOS上面Emoji 显示得跟字体一个颜色, 这个怎么解决啊

好像不太好解决。

我用coco2d-x 3.7, 发现在3.7 中C++版本已经解决了该问题,3.7 C++ 修改比较多,多以我想从Quick3.3 移植到Quick3.5 或者coco2s-x 3.7 去,可是Lua 又报错,我又发了个贴子,http://www.cocoachina.com/bbs/read.php?tid-313302.html

我也做到这里了,想坐屏蔽,能否共享下代码:6:
头疼几天了:6::6::6:

好吧,我自己找到 android 下屏蔽 emoji 的方法了
也不知道是否还有人遇上同样的问题,链接在这,有同样需求的童鞋看看
https://github.com/hugohuang1111/cocos2d-x/commit/c22ffe7c6e72f53bbb63fb5aa7304c4f85a3ebf0

:2: :2: :2:

能屏蔽掉吗少年?谢!

同求方法

两种解决方法:
1、java层去掉emoji。
2、java和c++的交互不要用string,改用byte。

– RuneLen returns the number of bytes required to encode the rune.
– It returns -1 if the rune is not a valid value to encode in UTF-8.
local surrogateMin = 55296 --0xD800
local surrogateMax =57343 – 0xDFFF
local rune1Max = 127 --1<<7 - 1
local rune2Max = 2047 – 1<<11 - 1
local rune3Max =65535 – 1<<16 - 1
local MaxRune = 1114111-- “\U0010FFFF” – Maximum valid Unicode code point.
function RuneLen®
if r < 0 then
return -1
elseif r <= rune1Max then
return 1
elseif r <= rune2Max then
return 2
elseif surrogateMin <= r and r <= surrogateMax then
return -1
elseif r <= rune3Max then
return 3
elseif r <= MaxRune then
return 4
else
return -1
end
end

local str=“a你:blush:b好3​:blush:c”
for p, c in utf8.codes(str) do
print("#############################################")
print(p …"="… c …"("…RuneLen©…")")
end