我的一个适配器返回一些包含特殊字符(如引号、项目符号或问号等)的数据
适配器调用的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 );
在设备(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
如果我通过桌面Chrome上的Eclipse开发工作室(最新版本43.0.2357.81 m
)运行通用应用程序,并通过VPN通过适配器访问后端数据,那么它使用正确的特殊字符(如引号 (") 或项目符号等)显示正确的数据。
但是,如果我在相同 Chrome 桌面浏览器中访问部署在另一台服务器计算机(上述规范)上的相同通用应用,则它不会处理特殊字符并显示奇怪的字符。
如上所示。
我检查了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
最佳答案
我遇到了类似的问题,问题出在我的 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 上的 MySQL 5.6)和 Windows 上的 Liberty 配置文件默认编码的组合。
关于jquery - 移动第一 : adapter returned data containing special characters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30381601/