escapeEcmaScript percantage特殊字符

时间:2014-10-23 11:13:45

标签: javascript android

我在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

我该如何解决这个问题?是否还有其他用于转义字符串的库?

谢谢

2 个答案:

答案 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> 

如果你用新的段落写的是用。

写的