PHP和JAVA的XML-RPC中文问题解决办法_php基础

      问题描述:
      在使用PHP和JAVA操作XML-RPC的时候,如果request中包含中文字符,会被自动编码成如下样式:

欢欢 。

      环境:PHP内置XML-RPC的API,Apache的XML-RPC的JAVA API

      PHP下的解决方法:
      起初以为是中文字符的编码问题,所以我就尝试用各种编码方式来编码中文字符,然后交给string xmlrpc_encode_request ( string method, mixed params)函数来生成XML格式的请求,可是依然如故。百思不得其界。便操其Google 一通神搜,也没找到解决办法,后来我找到了http://xmlrpc-epi.sourceforge.net/这个网站。才知道,原来PHP文档里给的xmlrpc_encode_request ( string method, mixed params)函数少了一个可选参数!!!!正确的应该是这样的:string xmlrpc_encode_request(string method, mixed params [, array output_options])!!output_options的结构如下:

$output_options = array(
                       "output_type" => "xml",
                       "verbosity" => "pretty",
                       "escaping" => array("markup", "non-ascii", "non-print"),
                       "version" => "xmlrpc",
                       "encoding" => "utf-8"
                      );
or

$output_options = array("output_type" => "php");

原文说明如下:

output_type: return data as either php native data types or xml encoded. ifphp is used, then the other values are ignored. default = xml

verbosity: determine compactness of generated xml. options are no_white_space, newlines_only, and pretty. default = pretty

escaping: determine how/whether to escape certain characters. 1 or more values are allowed. If multiple, they need to be specified as a sub-array. options are: cdata, non-ascii, non-print, and markup.default = non-ascii, non-print, markup

version: version of xml vocabulary to use. currently, three are supported: xmlrpc, soap 1.1, and simple. The keyword auto is also recognized to mean respond in whichever version the request came in. default = auto (when applicable), xmlrpc

encoding: the encoding that the data is in. Since PHP defaults to iso-8859-1 you will usually want to use that. Change it if you know what you are doing. default=iso-8859-1

经过测试关键是在"escaping" => array("markup")这个值上,将第三个参数传入如下值就可以解决问题了:

$output_options = array(
                       "output_type" => "xml",
                       "verbosity" => "pretty",
                       "escaping" => array("markup"),
                       "version" => "xmlrpc",
                       "encoding" => "utf-8"
                      );

      Apache JAVA XML-RPC的解决方法

     找遍了Apache提供的API好像也没有找到类似PHP那样的第三个参数,实在无奈发现他提供了一个Base64的类,我便只好将所有的中文字符在Client端用 Base64编码,然后request到Server上,然后在Server端在用Base64解码,哈哈~~~问题也能解决!不过不知道还有没别的更好的办法了?

     谁有更好的解决方法请和我联系:
     QQ:3470431
     MSN:imdishui@hotmail.com
     Email:wangsg@asiainfo.com

时间: 2024-08-03 07:03:46

PHP和JAVA的XML-RPC中文问题解决办法_php基础的相关文章

Python的中文问题解决办法

Python的中文问题解决办法 python 的 eclips教程环境后写了一个测试程序.结果出现这样的错误: SyntaxError: Non-ASCII character 'xbd' in file E:workspacemakeUpdatafilesIndexsrcmakeIndex.py on line 12, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details 原因是它不

PHP和JAVA的XML-RPC中文问题解决办法

xml|解决|问题|中文       问题描述:      在使用PHP和JAVA操作XML-RPC的时候,如果request中包含中文字符,会被自动编码成如下样式: 欢欢 .       环境:PHP内置XML-RPC的API,Apache的XML-RPC的JAVA API       PHP下的解决方法:      起初以为是中文字符的编码问题,所以我就尝试用各种编码方式来编码中文字符,然后交给string xmlrpc_encode_request ( string method, mix

Haroopad中文乱码不支持中文问题解决办法

 安装Haroopad之后发现编辑器中输入的中文字体看不到,而右边的预览框中显示正常,真的是让人头大.最后在网上找到了解决办法:   在"文件"下打开"偏好设置",选择编辑器,找到默认主题,点击编辑,如图:   可以看到default.css文件,修改成如下,字体可以根据自己喜欢修改,重新启动软件即可 /**   You can only use the following style.   - color, font-family, font-style   -

PHP json_encode()函数json不转义中文问题解决办法

如果你调用 PHP 自带的 json_encode() 函数, 碰到中文时, 中文会被转义掉. 例如: echo json_encode(array('你好')); // 输出: ["\u4f60\u597d"] 这非常恼人, 像是一堆乱码, JSON 标准从来没有说要把非 ASCII 字符转义, 标准说的是"Any UNICODE character". 如何禁用掉这种转义呢? 答案是, PHP 自带的 json_encode() 不能禁用这个特性(在 5.4.0

java.net.ConnectException: Connection refused问题解决办法_java

Socket异常 客户端异常 java.net.ConnectException: Connection refused: connect. 该异常发生在客户端进行new Socket(ip, port)操作时,该异常发生的原因是或者具有ip地址的机器不能找到(也就是说从当前机器不存在到指定ip路由),或者是该ip存在,但找不到指定的端口进行监听.出现该问题,首先检查客户端的ip和port是否写错了,如果正确则从客户端ping一下服务器看是否能ping通,如果能ping通(服务服务器端把ping

Gvim里不能输入中文问题解决办法

有一段时间没有用Ubuntu了,今天感觉Windows太卡了,就换到了Ubutn下面,想看看是不是会快点.打开了Gvim,打了几个中文,发现一打第二个字母的时候,输入法就自己退出了-..试了好多次,都没有能成功. Fine-Google it!网上走了一圈,有的讲需要加上本地的中文字符的语言支持,如这样:  代码如下 复制代码 sudo gedit /home/limy/.bashrc 在最后添加:LC_CTYPE="zh_CN.utf8,关闭. sudo gedit /etc/environm

PowerPoint 2007 中无法输入中文问题解决办法

从开始菜单找到"控制面板",双击"区域和语言选项". 收起这个图片展开这个图片     收起这个图片展开这个图片   在弹出的窗口中,切换到"语言"选项卡,单击"详细信息"按钮. 收起这个图片展开这个图片   进入"文字服务和输入语言"设置窗口,单击"高级"选项卡,默认状态下"关闭高级文字服务"复选框前是没有勾选的,如果有,请将其清除.然后退出设置窗口. 收起这个图片

Gregarius中文日期格式问题解决办法_php技巧

复制代码 代码如下: function rss_locale_date ($fmt, $ts, $addTZOffset = true) {       if (isset($_SERVER["WINDIR"])) {           //%e doesnt' exists under windows!           $fmt=str_replace("%e","%#d",$fmt);       }       if ($addTZO

PHP 和 XML: 使用expat函数(一)_php基础

PHP 和 XML: 使用expat函数(一) 可扩展标识语言(Extensible Markup Language )明显是大多数开发人员将想要将其加入到他们的工具箱中的东西.XML是一种W3C的标准,它是开放的,语言中性的,API中性的,流式的,文本的,人类可读 的, 并且是一种将结构化数据带到web上的一种方法.XML是SGML的一个子集,它本身并不是一种标识 语言,但是 它允许作者来定义他们自已的标识语言,以便同分级数据保持更好的一致性. 现在,用PHP 分析XML文档已经不是一个象我以