我的一个适配器返回一些包含特殊字符(如引号,项目符号或问号等)的数据。
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,"“").replace(/\”/g,"”").replace(/•/g,"<br>•");
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
如果我通过桌面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
答案 0 :(得分:3)
我有类似的问题,问题是我的Windows 2012服务器上的Liberty配置文件配置。 SQL适配器返回的数据在手机中显示为乱码(错误的字符)。当然,数据不是原生英语。
我认为你的生产服务器确实是 Liberty profile v8.5 + 。尝试在 jvm.options 文件中添加以下行,这些文件位于 server.xml 所在的同一文件夹/位置?
请记住,所有行都以-D
开头,之前或之后没有空格:
-Duser.language=en
-Duser.country=US
-Dfile.encoding=UTF-8
保存文件并重新启动 Liberty配置文件服务器。
其中一个为我做了诀窍,我猜它是一种语言,虽然我的SQL数据不是英文。
我怀疑在Windows上组合了DB编码(Windows上的MySQL 5.6)和Liberty配置文件默认编码。
答案 1 :(得分:0)
最近发布的针对MFPF 6.3的iFix版本提供了以下特定修复:PI39922 UNICODE参数在被传输到移动应用程序时被不正确地编码。
在修复之前,适配器响应可能包含诸如问题中图像中所示的字符。
所以我首先想到的是你需要从IBM Fix Central Studio下载最新的iFix,然后重新测试。