如何解决PHP XML RPC中文乱码问题

为了一个项目在做XMLRPC的应用。发现项目服务器上没有XMLRPC组件,又要重新编译PHP,头大…
找了很多资料发现,国外的一个叫PHPXMLRPC的开源代码很好用。直接代替XMLRPC组件。他在GOOGLE有托管。国内用的还不多,很多东西都要自己摸索着搞。
这个PHPXMLRPC写的很好,我们只要把它用到的时候加载进来,然后NEW一下就好。以下是我这里总结的相对好用的用法

//载入相关文件
require ‘xmlrpc.inc’;
$forxmlrpc = array(); //初始化数组,传输必要参数
$forxmlrpc['title'] = $content['title'];
$forxmlrpc['contentid'] = $contentid;
$f=new xmlrpcmsg(’popcms.new’,array(new xmlrpcval(1, “int”),new xmlrpcval(’murray’, “string”),new xmlrpcval(’123′, “string”),php_xmlrpc_encode($forxmlrpc))); //新建一个XML格式
$c=new xmlrpc_client(”xmlrpc.php”, “www.popcms.net”, 80); //新建一个客户端
$c->request_charset_encoding = ‘utf-8′; //初始化时的编码格式,如果有中文,这一点是必须的,不然有乱码
$c->setDebug(1); //开启出错选项
$r=&$c->send($f); //发送请求
//以下是调试返回数据的代码

if(!$r->faultCode())
{$v=$r->value();
print “</pre><br/>State number ” . $stateno . ” is “. htmlspecialchars($v->scalarval()) . “<br/>”;
}else{
print “An error occurred: “;
print “Code: ” . htmlspecialchars($r->faultCode()). ” Reason: ‘” . htmlspecialchars($r->faultString()) . “‘</pre><br/>”;
}

虽然现在可以正常发送接收数据,但是还是会出现传递过程中的中文乱码。
原来PHPXMLRPC会自动转换编码,但提交后是乱码,是因为默认指定的是ISO-8859-1编码,而这个参数就是xmlrpc_internalencodeing,具体的操作步骤是:

打开?xmlrpc.inc222行, 将
$GLOBALS['xmlrpc_internalencoding']=’ISO-8859-1′;
改成
$GLOBALS['xmlrpc_internalencoding']=’UTF-8′;

至此XMLRPC的中文乱码问题解决了。

相关日志


如果你觉得这篇文章不错,你可以 给我留个回复订阅它。无论如何,谢谢你的支持!

评论

看不懂啊,还是要学习php

没搞过,看着代码就头疼。还是做些小站玩玩比较实在。

谢谢lz 学习了!!

来晚了 给LZ顶一个

学习了 支持下!!

果然写的好 顶你

很久没来,又有新博文了,支持

没遇到过,学习下。以后遇到问题就能找到答案了

文章不错,只是。。。。没看懂

好深的知识

受教了,谢谢啊

老郭来了 抢个沙发先 哈哈哈哈

来看一下,学习了,谢谢!

现在还没有用上。先收藏下。

看了一下,学习一下呢,,

路过进来看看,学习了

还没用到收藏

怎么能让第一页文章列的多啊

打个酱油路过,看下文章,呵呵

博文写得不错啊,我打酱油路过,随便看看

//载入相关文件
require ‘xmlrpc.inc’;
$forxmlrpc = array(); //初始化数组,传输必要参数
$forxmlrpc['title'] = $content['title'];
$forxmlrpc['contentid'] = $contentid;
$f=new xmlrpcmsg(’popcms.new’,array(new xmlrpcval(1, “int”),new xmlrpcval(’murray’, “string”),new xmlrpcval(’123′, “string”),php_xmlrpc_encode($forxmlrpc))); //新建一个XML格式
$c=new xmlrpc_client(”xmlrpc.php”, “www.popcms.net”, 80); //新建一个客户端
$c->request_charset_encoding = ‘utf-8′; //
看到这些头就晕了!!www.jsxggx.com http://www.yafei-cable.com
http://www.und188.com

博主好久没来转转了,最近发现的,行业宣传贴吧,每天都很多人咨询我呢,到这里来发帖就可以了
http://www.tbdy.net

博主的文章不错,我又来看了,呵呵

支持一下

再支持一下

不错的文章 我又来看了 嗨

发表评论

(必填)

(必填)