MobileFirst:适配器返回包含特殊字符的数据

时间:2015-05-21 18:27:27

标签: jquery twitter-bootstrap webview ibm-mobilefirst mobilefirst-adapters

我的一个适配器返回一些包含特殊字符(如引号,项目符号或问号等)的数据。

enter image description here

onSuccess适配器调用,我将数据保存在变量中,如下所示。

try{

   var data = JSON.stringify(response.invocationResult) ;
   var  _meetingDetailsArray = JSON.parse(data).MXEMEETINGSet.EMEETING ;

}catch(Exception) {
    logger.error( Exception );
}

之后我选择所需的字段/值并将它们保存在另一个js对象中,如下所示。

    var _summary = ( _meetingDetailsArray.EMEETINGITEM.TCMEETING.VLSUMMARY || "" )  + ( _meetingDetailsArray.EMEETINGITEM.TCMEETING.VLSUMMARY_LONGDESCRIPTION || "" );

//below did not work even
    //_summary = _summary.replace(/\“/g,"&#8220;").replace(/\”/g,"&#8221;").replace(/•/g,"<br>&#8226;");

UserProfile.getUserProfileDetails().userMeetingFullDetails.MeetingItems.STANDARD.Summary.push( _summary  );

devices (iOS, Android)上查看结果时,会显示奇怪的字符。

enter image description here

我正在使用 JQuery Mobile 2.1.3 以及 Bootstrap 3.3.2 ,并且所有页面都是动态加载的。主index.html已包含chartset,但仍然没有任何好处。

  <meta charset="utf-8"/>

然而,在像Chrome这样的桌面浏览器上它显示正常。

更新

我已应用 iFix v6.3.0.0 InterimFix 201505212300 ,但结果仍然相同

更新后,适配器按原样发回特殊字符,而之前它们已转换为Unicode格式。

enter image description here

环境:

  • Eclipse -Luna Service Release 2( 4.4.2
  • MobileFirst Studio - 6.3.0.00-20150521-2300
  • MobileFirst 6.3(内部版本号: IMF 00-20150521-2300
  • IBM WAS Liberty Profile 8.5.5.5(基本版)

enter image description here

更新2

如果我通过桌面Chrome上的Eclipse开发工作室运行通用应用latest Version 43.0.2357.81 m)并通过VPN通过适配器访问后端数据,那么shows correct data with correct special characters like quotation marks (") or bullets etc.

但是,如果我在相同 Chrome桌面浏览器中访问部署在另一台服务器计算机上的通用应用(上述规范),那么it does not handle special characters and shows strange characters.为如上所示。

我检查了 HTTP请求/响应,两者都相同。

本地发展回应:

GET /myProject/apps/services/preview/eMeeting/common/1.0/default/index.html HTTP/1.1
Host: 10.151.59.2:10080
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Cookie: NID=67=BUovympli30FPUZ9xJ0N8heI22xH4wL8uuy3YPL3n7EmTtSpQ7nQ_VJS0zgGnWbXVmrHAfU1CIER3HhPvGDfkBODxOoKQsXpuCE6punpkrw-WhRZmg7duiZntwqzgjHh; PREF=ID=55ee18705b919343:U=3649ea9bd9b0a9cc:FF=0:TM=1432904549:LM=1432904571:S=7VeFNsfwhAARESRp
DNT: 1
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36
X-Client-Data: CIa2yQEIpLbJAQiptskBCMS2yQEI6YjKAQj9lcoB

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store, must-revalidate
Content-Length: 3833
Content-Type: text/html
Date: Fri, 29 May 2015 13:41:45 GMT
Expires: Thu, 01 Jan 1970 00:00:00 GMT
P3P: policyref="/w3c/p3p.xml", CP="CAO DSP COR CURa ADMa DEVa OUR IND PHY ONL UNI COM NAV INT DEM PRE"
Pragma: no-cache
X-Powered-By: Servlet/3.0

在另一台计算机上运行的服务器的响应:

GET /myProject/apps/services/preview/eMeeting/common/1.0/default/index.html HTTP/1.1
Host: 10.150.20.51:9080
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Cookie: NID=67=BUovympli30FPUZ9xJ0N8heI22xH4wL8uuy3YPL3n7EmTtSpQ7nQ_VJS0zgGnWbXVmrHAfU1CIER3HhPvGDfkBODxOoKQsXpuCE6punpkrw-WhRZmg7duiZntwqzgjHh; PREF=ID=55ee18705b919343:U=3649ea9bd9b0a9cc:FF=0:TM=1432904549:LM=1432904571:S=7VeFNsfwhAARESRp
DNT: 1
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36
X-Client-Data: CIa2yQEIpLbJAQiptskBCMS2yQEI6YjKAQj9lcoB

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store, must-revalidate
Content-Length: 3833
Content-Type: text/html
Date: Fri, 29 May 2015 13:43:11 GMT
Expires: Thu, 01 Jan 1970 00:00:00 GMT
P3P: policyref="/w3c/p3p.xml", CP="CAO DSP COR CURa ADMa DEVa OUR IND PHY ONL UNI COM NAV INT DEM PRE"
Pragma: no-cache
X-Powered-By: Servlet/3.0

2 个答案:

答案 0 :(得分:3)

我有类似的问题,问题是我的Windows 2012服务器上的Liberty配置文件配置。 SQL适配器返回的数据在手机中显示为乱码(错误的字符)。当然,数据不是原生英语。

我认为你的生产服务器确实是 Liberty profile v8.5 + 。尝试在 jvm.options 文件中添加以下行,这些文件位于 server.xml 所在的同一文件夹/位置?

enter image description here

请记住,所有行都以-D开头,之前或之后没有空格:

-Duser.language=en
-Duser.country=US
-Dfile.encoding=UTF-8

enter image description here

保存文件并重新启动 Liberty配置文件服务器。

其中一个为我做了诀窍,我猜它是一种语言,虽然我的SQL数据不是英文。

我怀疑在Windows上组合了DB编码(Windows上的MySQL 5.6)和Liberty配置文件默认编码。

答案 1 :(得分:0)

最近发布的针对MFPF 6.3的iFix版本提供了以下特定修复:PI39922 UNICODE参数在被传输到移动应用程序时被不正确地编码。

在修复之前,适配器响应可能包含诸如问题中图像中所示的字符。

所以我首先想到的是你需要从IBM Fix Central Studio下载最新的iFix,然后重新测试。