关于“网游屏蔽字简繁混合”的解决方案

          项目最近开始向版署申请版号,反馈的一项修改内容,是聊天屏蔽字库简繁混合未能屏蔽。比如“abc”和“ABC”都能屏蔽,但是类似"AbC,“aBC这些不能屏蔽(大小写代替简繁体)。

     上网查了下资料,最后的解决方案是,把发送字符全部转为简体,然后在跟屏蔽字库的字符进行比较。

      代码实现如下,接口是给lua使用:

static int luaA_simplify(lua_State *L)
{
	size_t l;
	std::wstring src = MByteToWChar(luaL_checklstring(L, 1, &l));

	WORD wLanguageID = MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED) ;
	LCID Locale = MAKELCID( wLanguageID, SORT_CHINESE_PRC ) ;//0x0804

	int len = LCMapStringW( Locale, LCMAP_SIMPLIFIED_CHINESE, src.c_str(), -1, NULL, 0 );
	wchar_t* pszGbs = new wchar_t[ len ];
	LCMapStringW( Locale, LCMAP_SIMPLIFIED_CHINESE, src.c_str(), -1, pszGbs, len );

	std::string des = WCharToMByte(pszGbs);
	delete [] pszGbs;

	tolua_pushstring(L, des.c_str());

	return 1;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值