如何解决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/>”;
}
打开?xmlrpc.inc 第222行, 将
$GLOBALS['xmlrpc_internalencoding']=’ISO-8859-1′;
改成
$GLOBALS['xmlrpc_internalencoding']=’UTF-8′;
至此XMLRPC的中文乱码问题解决了。
相关日志
如果你觉得这篇文章不错,你可以 给我留个回复或订阅它。无论如何,谢谢你的支持!
评论
//载入相关文件
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


看不懂啊,还是要学习php