Estou escrevendo um serviço da web que usa json para representar seus recursos e estou um pouco preso a pensar sobre a melhor maneira de codificar o json. Lendo o json rfc ( http://www.ietf.org/rfc/rfc4627.txt ), fica claro que a codificação preferida é utf-8. Mas o rfc também descreve um mecanismo de escape de string para especificar caracteres. Suponho que isso geralmente seria usado para escapar caracteres não-ascii, tornando o utf-8 ascii válido.
Então, digamos que eu tenha uma string json que contém caracteres Unicode (pontos de código) que não são ASCII. O meu serviço da web deve apenas codificar em utf-8 e retorná-lo ou deve escapar de todos os caracteres não ASCII e retornar ASCII puro?
Eu gostaria que os navegadores pudessem executar os resultados usando jsonp ou eval. Isso afeta a decisão? Meu conhecimento de suporte a javascript de vários navegadores para utf-8 é insuficiente.
EDIT: Eu queria esclarecer que minha principal preocupação sobre como codificar os resultados é realmente sobre como o navegador manipula os resultados. O que li indica que os navegadores podem ser sensíveis à codificação ao usar JSONP em particular. Não encontrei nenhuma informação realmente boa sobre o assunto, então terei que começar a fazer alguns testes para ver o que acontece. Idealmente, gostaria de apenas escapar aqueles poucos caracteres que são necessários e apenas utf-8 codificar os resultados.