Я пишу веб-сервис, который использует json для представления своих ресурсов, и я немного зациклился на том, как лучше всего закодировать json. Читая json rfc ( http://www.ietf.org/rfc/rfc4627.txt ), становится ясно, что предпочтительной кодировкой является utf-8. Но RFC также описывает механизм экранирования строки для указания символов. Я предполагаю, что это обычно используется для экранирования символов, отличных от ascii, тем самым делая результирующий utf-8 действительным ascii.
Итак, допустим, у меня есть строка json, содержащая символы Юникода (кодовые точки), не относящиеся к ascii. Должен ли мой веб-сервис просто кодировать utf-8 и возвращать его, или он должен избегать всех этих символов, отличных от ascii, и возвращать чистый ascii?
Я бы хотел, чтобы браузеры могли выполнять результаты с помощью jsonp или eval. Влияет ли это на решение? Мне не хватает знаний о поддержке utf-8 в различных браузерах javascript.
РЕДАКТИРОВАТЬ: Я хотел уточнить, что моя основная забота о том, как кодировать результаты, на самом деле связана с обработкой результатов браузером. То, что я прочитал, указывает на то, что браузеры могут быть чувствительны к кодировке, в частности, при использовании JSONP. Я не нашел действительно хорошей информации по этому поводу, поэтому мне придется начать тестирование, чтобы увидеть, что произойдет. В идеале я хотел бы избежать только тех нескольких символов, которые требуются, и просто кодировать результаты utf-8.