2013-03-15 3 views
1

json 응답에서 스페인어 텍스트를 사용해야합니다. 모든 가능한 방법을 시도했지만 메시지는 여전히 UI에서 이상한 문자를 보여줍니다. 자바 측면에서 JSON 응답의 특수 문자 인코딩

N�mero de Seguro Social 

,

//response.setContentType("application/json"); 
//response.setCharacterEncoding("UTF-8"); 
response.setContentType("application/json;charset=utf-8"); 
OutputStream out = null; 
out = response.getOutputStream(); 
out.write(jsonResponse.toString().getBytes()); 
out.close(); 

머리 부분에 메타 태그를 추가, 내가 보여주고 싶은 메시지는,

Número de Seguro Social 

입니다 그러나로 표시됩니다.

<meta http-equiv="content-type" content="text/html;charset=utf-8"> 

나는 또한 Ajax 호출

$.ajax({ 
     async: false, 
     cache: false, 
     type: get, 
     contentType: "application/json; charset=utf-8", 
     url: //url, 
     data: //data, 
     dataType: //dataType, 
     success: //callbackfn, 
     error: //errorfn 
    }); 

아무것도에 콘텐츠 형식을 설정 한 작동 보인다. 의도 한대로 특수 문자가 작동하도록하기 위해 할 수있는 다른 방법이 있습니까?

답변

2

오류 문자열 전송하여 처음 발생하는 위치 I 테스트 것이다 다음 UTF 문자열을 보여주는 브라우저에

"N\u00famero de Seguro Social" 

를 그냥 이해 할 수 있는지 확인하고, UTF 문자열을 표시하기 위해, 너는 전시하려하고있어.

그러나 실제 문제는 아마입니다 : getBytes이 UTF-8하지 않을 수 시스템에 대한 기본 캐릭터 세트 바이트를 얻을 것이다

out.write(jsonResponse.toString().getBytes()); 

으로. 이를 확인하려면 Charset.defaultCharset();

jsonResponse은 응답 데이터를 저장 한 다음 끝에 JSON으로 변환하는 클래스라고 생각하고 있습니다. 나는 http://www.json.org/에서 Google JSON library 같은 라이브러리를 사용하는 것이 좋습니다. JSON 변환을 수행하는 경우, 인코딩/디코딩을 수행하는 데 알맞은 라이브러리를 사용하는 한 문제가 해결되는 것과 같은 작은 문제가 많습니다.

+0

감사 @Danack ... 트릭() getBytes로 캐릭터 세트를 않았다 통과 .. 'jsonResponse.toString(). getBytes (Charset.forName ("UTF-8")' – RKodakandla

+0

@rrkwells 당신을 JSON을 Java로 직접 인코딩하고 싶지는 않습니다. – Danack

0
$.ajax({ 
type: "Get", 
url: your url, 
data: { inputParam : JSON.stringify(inputParam)}, 
    dataType: "json", 
    success: //callbackfn, 
    error: //error 
});