Java-код ниже
JSONObject obj = new JSONObject();
try{
obj.put("alert","•é");
byte[] test = obj.toString().getBytes("UTF-8");
logger.info("bytes are"+ test);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
};
создает JSONObject, который экранирует символ маркера, но не латинскую букву e с гравировкой, например ""•é", байтовый код [123, 34, 97, 108, 101, 114, 116, 34, 58, 34, 92, 117, 50, 48, 50, 50, -61, -87, 34, 125]
Как я могу получить такой же точный вывод в Javascript (с точки зрения последовательности байтов)? Я не понимаю, почему JSONObject экранирует только один символ, но не другой. Я не знаю, по какому правилу он следовал.
Кажется, в javascript я могу либо избежать всего, кроме ASCII (например, \ u007f-\ uffff), либо вообще не избегать.
Спасибо!
byte[]
? Это другая проблема, которую показал побег. - person user2864740   schedule 11.06.2014