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,"“").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 格式。
环境:
- Eclipse -Luna 服务版本 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(基础版)
更新 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 配置文件默认编码的组合。
我的一个适配器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,"“").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 格式。
环境:
- Eclipse -Luna 服务版本 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(基础版)
更新 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 配置文件默认编码的组合。