我在Android应用程序中使用自定义javascript桥,
我在我的桥库项目中有一个代码,你可以在下面看到,这段代码转义了我给的字符串
ObjectMapper m = new ObjectMapper();
try {
// responsdata comes from application layer
jsonStr = m.writeValueAsString(responseData);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
String escaped = StringEscapeUtils.escapeEcmaScript(jsonStr);
respondRequest = String.format("javascript:myalias.respond(%d, %d,\"%s\")", invocationId, responseStatus, escaped);
webview.loadUrl(respondRequest);
问题是:当我在客户端检查这些数据时,json解析器会识别一些特殊字符
数据中的某些部分:
when debug application i can see like that after escape,
1 - <td>%12,17</td></tr>\r\n<tr><td>
2 - <td>%11,74</td></tr></tbody></table>\r\n<p class=
3 - %15 indirim!!","Url
4 - %15 fırsatı sizi bekliyor."
but after webview unescape data
1 - <td>,17</td></tr>\r\n<tr><td>
2 - <td>,74</td></tr></tbody></table>\r\n<p class=
3 - indirim!!","Url
4 - fırsatı sizi bekliyor."
它为%nn(%两位数字)
添加了一些特殊字符但是线条下面的线条保持正常
<td>%0,94</td>\r\n<td>954 TL</td>\r\n<td>2.465 TL</td>\r\n<td>%1,01</td>\r\n
我该如何解决这个问题?是否还有其他用于转义字符串的库?
谢谢
答案 0 :(得分:1)
这是一个已知的bug-->,尚未修复,这个问题已经附带了android 4.4的新webview,
但我这样解决了这个问题:
respondRequest = String.format("javascript:mostar.respond(%d, %d,\"%s\")", invocationId, responseStatus,URLEncoder.encode(StringEscapeUtils.escapeEcmaScript(jsonStr)));
答案 1 :(得分:0)
\ r \ n JavaScript语法中的字符'是新行的合适定义。
HTML语言
<textarea> </textarea>
用于。
html语言行'\ n'而不是
<br/>
收入。
或每个项目
<p> text </p>
如果你用新的段落写的是用。
写的