能力值:
( LV2,RANK:10 )
|
-
-
[通告]论坛开启聊天室功能
[转贴]flashchat 中文用户名解决方法
昨天无聊买了一套flashchat正版,发现按照论坛提供的方法也是无法解决vbb中中文用户名进入的问题。
表现形式不是乱码,而是变成问号,例如“ABC中文用户”就变成了“ABC????”,反复修改vbulletin36CMS.php均无法解决。
无奈只有从程序源头开始看起。
首先发现,和vbb整合以后,vbb将用户的id传给flashchat,然后再有flashchat从数据库里面读取这个用户的用户名。因此推测是在数据库读取时产生的错误。用pma进入,发现果然如此,flashchat又是使用latin1编码的utf8来进行存储。唉,当年vbb的impex也是犯了同样的错误。一旦用户环境是采用纯utf的环境时,读写数据库就会产生问题。
于是,将flashchat的db.php修改一行,在 $this->conn = $GLOBALS['fc_config']['db_conn']; 下面加上 mysql_query("SET NAMES utf8"); 以后解决。
因此,总结一下flashchat中文用户名的解决方法:
1. 首先修改 vbulletin36CMS.php
寻找
else $rec['login'] = utf8_encode($rec['login']);
修改成为
else
//$rec['login'] = utf8_encode($rec['login']);
测试一下,如果成功,那么完事。如果不成功,说明你和我一样倒霉,才做第2步:
2. 修改db.php
寻找 $this->conn = $GLOBALS['fc_config']['db_conn'];
下面加上
mysql_query("SET NAMES utf8");
做完这步以后,在pma里面,就可以看到vbb的数据编码格式就和flashchat的数据编码格式一致了。我想你也不希望在同一个db里面出现两种不同的编码格式吧?
有兴趣测试的朋友可以来我的测试论坛试一试:
http://bbs.xbox-sky.com
PS:以上方法仅在FlashChat_v481 版本上测试通过,不保证其他版本也可以。
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|
能力值:
( LV2,RANK:10 )
|
-
-
|