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

MobileFirst: adapter returned data containing special characters

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

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

try{

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

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

之后我挑选出需要的fields/values并将它们保存在另一个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) 上查看结果时显示奇怪的字符。

我正在使用 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 格式。

环境:

更新 2

如果我 运行 common app 通过桌面上的 Eclipse development studio Chrome (latest Version 43.0.2357.81 m) 并通过适配器访问后端数据通过 VPN,然后 shows correct data with correct special characters like quotation marks (") or bullets etc.

但是如果我在 same same 109=] 桌面浏览器然后 it does not handle special characters and shows strange characters. 如上所示。

我检查了 HTTP request/response 两者是一样的。

本地开发响应:

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

最近针对 MPFF 6.3 的 iFix 版本提供了以下特定修复:PI39922 UNICODE 参数在传递到移动优先适配器时编码不正确。

修复之前,适配器响应可能包含字符,例如问题图像中看到的字符。

所以我的第一个想法是您需要从 IBM Fix Central Studio 下载最新的可用 iFix,然后再次测试。

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

我假设您的生产服务器确实是 Liberty profile v8.5+。尝试在存在 server.xml 的同一 folder/place 中的 jvm.options 文件中添加以下行?

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

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

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

其中一个帮了我的忙,我想这是语言之一,虽然我的 SQL 数据不是英文的。

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