之前在弄ecshop的时候,发现UC通讯成功但是无法登陆,找了半天原因是中文的用户无法登陆,而英文的可以。网上没有解决方案,这里自己研究了下,提供给大家。

首先问题出在了编码上,我的discuz是GBK自然UC_Server也是GBK,而ecshop是UTF8,这导致双方通讯的中文会变成乱码,解决方法是,将所有UTF-8的提交的传输,都强制改成GBK。

修改文件为:uc_client下的client.php

1、找到uc_api_post,替换成:

function uc_api_post($module, $action, $arg = array())
{$s = $sep = '';foreach ($arg as $k => $v){ // 强制转换编码方式为GBK,以兼容通行证$k = iconv("UTF-8", "GBK", $k);$k = urlencode($k);if (is_array($v)){$s2 = $sep2 = '';foreach ($v as $k2 => $v2){// 强制转换编码方式为GBK,以兼容通行证$k2 = iconv("UTF-8", "GBK", $k2);$k2 = urlencode($k2);// 强制转换编码方式为GBK,以兼容通行证$tmp = iconv("UTF-8", "GBK", uc_stripslashes($v2));$s2 .= "$sep2{$k}[$k2]=" . urlencode($tmp);$sep2 = '&';}$s .= $sep . $s2;}else{// 强制转换编码方式为GBK,以兼容通行证$v = iconv("UTF-8", "GBK", uc_stripslashes($v));$s .= "$sep$k=" . urlencode($v);}$sep = '&';}$postdata = uc_api_requestdata($module, $action, $s);$result = uc_fopen2(UC_API . '/index.php', 500000, $postdata, '', true, UC_IP, 20);// 强制转换编码方式为utf-8,以兼容现有网站return iconv("GBK", "UTF-8", $result);
}

2、搜索所有username的function,在第一行增加$username = iconv( “UTF-8”, “GBK”,$username);需要注意的是,有个地方有oldname和newname,只是给修改用户名用的,我把这个程序阉割了,所以没改,有需求的记得改下。

经过以上修改,依旧存在一个问题,在同步登陆,或者使用中文在UTF-8登陆的时候,用户名会显示为空,

问题出在了,当uc返回用户名的时候,是GBK,需要将其转化为UTF-8才能存入数据库,修改方法如下:

  • /includes/modules/integrates/ucenter.php
  • 找到function login($username, $password, $remember = NULL)
  • 在$uname = addslashes($uname); 下面增加
$uname = iconv( "GBK", "UTF-8",$uname);

转载:https://jingine.com/ucenter-encode-uclinet-ucserver

Ucenter的UClinet和UC_Server编码不一致无法登陆解决方法相关推荐

  1. MyEclipse编码设置,中文乱码解决方法,UTF-8,GBK

    在Myeclipse导入一个项目,有中文乱码问题,解决方法如下: 一.将整个project设置编码UTF-8(UTF-8可以最大的支持国际化) windows->Preferences-> ...

  2. Emoji的编码以及常见问题的解决方法

    原文:https://segmentfault.com/a/1190000007594620 一个Emoji的趣闻 我在 虎嗅上 看过一篇关于Emoji的文章,特别有意思,在这里跟大家分享一下. 里面 ...

  3. MyEclipse编码设置,中文乱码解决方法,UTF-8,GBK(转)

    一.设置新建常见类型文件的默认编码格式,也就是文件保存的格式. 在不对MyEclipse进行设置的时候,默认保存文件的编码,一般跟简体中文操作系统(如windows2000,windowsXP)的编码 ...

  4. mysql防止从节点可写数据_mysql 主从数据不一致 Slave_SQL_Running: No 解决方法

    在slave服务器上通过如下命令 MysqL> show slave status\G; 显示如下情况: Slave_IO_Running: Yes Slave_sql_Running: No ...

  5. Ruby on Rails,创建模型,附赠模型与表名不一致时的解决方法

    在前文<Ruby on Rails,创建和执行migrations迁移文件>中我们提到过创建模型的事情,我们创建模型的同时生成迁移文件.那时候我们关注的是迁移文件,现在我们把目光投向模型这 ...

  6. oracle 查询数据库时区,[原创]数据库时区与操作系统不一致时的解决方法

    这几天净遇到棘手的事情:前天遇到字符集问题,今天遇到数据库时区问题. 不过,经过努力,都解决了.现在,先把解决时区问题的经过说一遍: 我们的环境:os是aix 5.1,oracle是9.2.0.5. ...

  7. PHP中获取的时间与本地时间不一致时的解决方法

    在PHP中使用"date(Y/n/d H:i)"获取时间和本地的真实时间不同的原因可能是:      1.没有修改php.ini的配置文件中的默认时区为当前的时区位置        ...

  8. python 编码报错问题 'ascii' codec can't encode characters 解决方法

    python在安装时,默认的编码是ascii, 当程序中出现非ascii编码时,python的处理常常会报这样的错 'ascii' codec can't encode characters pyth ...

  9. mysql编码不对_MySQL编码不一致导致乱码问题总结

    使用MySQL常常会出现乱码问题,一般情况下都是因为编码不一致造成,以下提供了MySQL数据编码相关的一些信息,希望会有所帮助. 一.MySQL的编码机制: 1.数据库级别的编码:数据库服务器上允许建 ...

最新文章

  1. 最终一致性,一致只会迟到,但绝不会缺席
  2. html数据分析表格api_Python数据分析基本库——Matplotlib(一)
  3. Endnote X9安装教程
  4. PHP设置按钮不可用,css怎么控制按钮不可用,button按钮css样式
  5. Spring的xml文件配置方式实现AOP
  6. coreldraw怎么打印荣誉证书_使用Word 2010制作并打印荣誉证书的方法
  7. GitHub中文社区
  8. jabber android apk,Android版Jabber — 快速入门指南
  9. 微信小程序小说云开发免费源码
  10. 红杉资本投资的企业汇总
  11. 信息安全保障人员(CISAW)工控网络安全方向认证介绍
  12. 商标45类分类表明细表_45类商标分类明细_45类商标经营范围包括哪些商品-商标查询-知夫子...
  13. 点燃我温暖你 爱心代码python
  14. epoch mysql_PostgreSQL中epoch的用法
  15. 数组下标越界可能出现的问题
  16. Gitlab回滚到上次提交
  17. [记录一个bug]ffmpeg转码时间戳-伪代码版流程要点小记[已解决]
  18. 五个小众好用的搜索引擎
  19. 嘉宾专访|2020 PostgreSQL亚洲大会阿里云数据库专场:曾文旌
  20. 可编程逻辑器件与专用集成电路——《Verilog 与数字ASIC设计基础》读书笔记

热门文章

  1. 积分球辐射光源照度均匀性
  2. 均匀球体模型的重力异常正演
  3. Python通过机器学习实现对个人信用评估
  4. opencv 视频中画矩形
  5. SEC S3C2410X Test B/D 驱动安装
  6. 《ESP32-Arduino开发》GUI设计 LVGL 开发环境搭建教程(从工程目录到模拟器)
  7. GitHub Pages部署vuepress报错:JavaScript heap out of memory
  8. 图形外部加文字 r语言_将外部图形卡连接到笔记本电脑的最佳方法
  9. Java核心编程(22)
  10. http://jingyan.baidu.com/article/d169e186b38c37436611d8fa.html