嘿嘿,被别人误导了。
有二种方法
方法1:
# vi ./modules/core/m_nick.c
找到 clean_nick_name() 函数
注释掉
# for(; *nick; nick++)
# {
# if (!IsNickChar(*nick))
# return (0);
# }
重编译使用就可支持多字节昵称了,不过,现在昵称连空格都支持了,嘿嘿,所以,恭喜你,服务器对昵称的管理会错乱。
还有一个重大BUG,偶不告诉你,哈哈~~
================================================
本着好奇,解除已知BUG的想法,使用方法二吧。
方法2:
# vi ./include/irc_string.h
相应位置加上
#define NNICK_C 0x20000
改
#define IsNickChar(c) (CharAttrs[(unsigned char)(c)] & NNICK_C)
为
#define IsNickChar(c) (!(CharAttrs[(unsigned char)(c)] & NNICK_C))
# vi ./src/match.c
在数据 CharAttrs[] 需要屏蔽的ASCII字符上加 NNICK_C 标记
重编译使用吧。
================================================
Note:
1. NNICK_C 标记 nick 不支持的字符(ASCII编码)
2. 空格一定要加上 NNICK_C标记
其时,方法2 也可能会有问题,不过,如果,写multi byte支持函数,那么要写GB2312、GBK、UTF-8等等都要写(写了GB2312判断后突然想到),懒得去做了。
有问题再说吧。
版本:ircd-hybrid-7.2.3
找不到上传文件的地方。¥%¥#……%¥——*——(*)——(