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

2016-01-29 15:03 30 1 收藏

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

【 tulaoshi.com - 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的结构如下:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

$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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/php/)

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-

来源:https://www.tulaoshi.com/n/20160129/1495120.html

延伸阅读
标签: Java JAVA基础
只需要保持下面几处地方设置统一,你的JSP就不会有中文问题  1、JSP的charset 2、你的JSP SERVER编译JSP是使用的字符集,默认和操作系统是一样的。你可能需要进行修改  3、你的BEAN编译时候所采用的字符集,一般用JAVAC编译,都是和操作系统一样的,但你可以通过带参数来改变。如果用其它的编程工具,可以编译的话,你可能需要...
《巫师2》游戏时频繁跳出问题解决办法 首先,跳出目前已知情况分两种(自己系统必备游戏软件没装全的不算): 第一种: 配置较高玩家,机器可承受起高效果但不时会跳出。若调到较低效果则没有此问题。 这种情况只会在32位系统下出现,因为巫师2最高效果处理时单进程内存占有率会超2GB,之所以不时跳出是因为32位系统单进程内存占...
标签: Web开发
AJAX的乱码的出现在的原因 由于XMLHTTP采用的是Unicode编码上传数据,而一般页面采用的是gb2312,这就造成显示页面时产生乱码。而当在获取页面时的XMLHttp返回的是utf-8编码,这就造成了显示产生乱码。 解决方法之一就是在PHP文件中显示声明为GB2312 header("Content-Type:text/html;charset=GB2312");  而对于发送到服务器的中文进行...
《模拟人生3》游戏容易遇到的问题解决办法 由于《模拟人生3》的延展性很强,游戏内容丰富,除了EA一直不断更新补丁升级和资料片扩展,玩家们也是制作了各式的mod来进行更多的游戏体验,下文就是将游戏中可能常见的问题进行了总结。 1. 错误12 造成原因:内存太小。 解决方法: (1)少旅游:如果装了世界冒险 又不想把它给删掉 ...
标签: Web开发
目录 介绍 针对浏览器的选择器 让IE6支持PNG透明 移除超链接的虚线 给行内元素定义宽度 让固定宽度的页面居中 图片替换技术 最小宽度 隐藏水平滚动条 一. 介绍 这篇文章包括了8个非常有用的解决办法, 在进行css设计遇到问题时你就会用到它们. 二. 针对浏览器的选择器 这些选择器在你需要针对某款浏览器进行css设计时将非常有用. ...

经验教程

731

收藏

88
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部