2014-10-23 2 views
1

Я использую пользовательский яваскрипт мост в андроиде приложения,escapeEcmaScript Марки специального символа

У меня есть код в моем проекте библиотеки моста вы можете увидеть ниже, этот код ускользает строку я дал

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 doent распознают

некоторой части линий данных:

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." 

он помещает somespecial символ для% яя (% двузначных чисел)

, но ниже линии остается нормальным на обеих сторонах

<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 

Как я могу решить эту проблему? есть ли другая библиотека для экранирования строки?

Спасибо

ответ

1

Это известная bug-->, а не фиксировано, эта проблема пришла с андроид 4.4 «нового WebView,

, но я работал вокруг этой проблемы так:

respondRequest = String.format("javascript:mostar.respond(%d, %d,\"%s\")", invocationId, responseStatus,URLEncoder.encode(StringEscapeUtils.escapeEcmaScript(jsonStr))); 
0

\ г \ п символов в синтаксисе JavaScript «является подходящим определением новой линии.

HTML язык

<textarea> </textarea> 

используется.

HTML языка строки '\ п' вместо к

<br/> 

доход.

или для каждого элемента

<p> text </p> 

Если вы пишете с новым пунктом написано с.

+0

Я думаю, что есть проблема только с номером% twodigit, это похоже на проблему кодирования. – Talha

Смежные вопросы