2009-09-23 4 views
2

나는 사용자가 자신의 웹 페이지에 스크립트 태그를 포함 Asp.Net 웹 응용 프로그램을 가지고 있고, 내 서버 (JSONP & : 일반적인 핸들러를 사용하여 (ASHX))에서 데이터를 얻을문자 인코딩 문제 - 크로스 도메인 스크립팅

데이터는 히브리어로되어 있으며 응답에서 charset을 utf-8로 설정합니다.

데이터를 표시하는 클라이언트 웹 사이트가 "windows-1255"를 사용하는 경우 텍스트가 제대로 표시되지 않습니다.

스크립트는 모든 문자 세트가있는 웹 페이지에 포함될 수 있습니다.

데이터를 변환하거나 응답 문자 집합 속성을 다르게 설정해야합니까?

주셔서 감사 인터페이스는 UTF-8 인코딩을 사용 Yaron

답변

3

(데이터를 표시하는) 클라이언트 웹 사이트에서 "windows-1255"를 사용할 때 텍스트가 제대로 표시되지 않습니다.

예. 여기에 <script>을 제공 할 때 응답의 Content-Type에 'charset'매개 변수를 원하는대로 설정할 수 있지만 IE는 사용자를 무시하고 대신 원본 페이지의 인코딩을 사용합니다. (다른 브라우저 일 수도 있습니다.)

따라서 JSONP 또는 다른 스크립트 태그 기반 데이터 가져 오기 방법을 사용하는 경우 해당 데이터는 원본 페이지와 동일한 인코딩 또는 일반 ASCII 중 하나 여야합니다. 잠재적으로 다른 인코딩으로 많은 웹 페이지에 대해 외부 서비스를 제공하는 경우 ASCII를 사용해야합니다.

즉, JSON 인코더가 문자열 리터럴의 모든 비 ASCII 문자를 JS 문자로 이스케이프 처리 된 양식으로 변환해야합니다 (예 : \u20AC).

+0

감사합니다. 그 기능을 알고 있습니까? 각면에 하나씩 필요하다고 가정합니다 (JS & C#) – Yaron

+0

JS 측에서 필요하지 않습니다. JS는 기본적으로 \ uxxxx 인코딩을 이해합니다. 이러한 인코딩을 생성하려면 C# 측에 뭔가가 필요합니다. – AnthonyWJones

+0

JS 측은 작동하지만'\ u'-escapes는 JavaScript 문자열 리터럴의 기본 부분입니다. .NET 용 JSON 구현을 모두 조사하지는 않았지만, 한눈에 LitJSON이 비 ASCII를 이스케이프로 작성하는 것으로 보입니다. http://litjson.sourceforge.net/ – bobince

1

그것의 당신이 당신의 고객에게 명확하게 지정하는 것이 아마도 더 나은. 고객에게 데이터를 전달하면 Response.CharSet을 UTF-8로 설정해야합니다. 물론 당신은 이미 그 일을 이미 끝내고 있습니까?

+0

클라이언트 (테스트) 사이트는 "windows-1255"를 사용하고 히브리어 문자를 올바르게 표시합니다. 내 데이터도 히브리어로 표시되지만 utf-8을 사용하고 페이지 인코딩을 utf-8로 변경하지 않으면 표시 할 수 없습니다. Firefox와 Chrome 모두 제대로 작동하지만 IE7은 페이지 인코딩은 UTF-8이어야합니다. 서버에서 데이터를 가져 오면 Response.Charset을 "utf-8"로 설정합니다. IE7이이 설정을 무시하고 HTML 헤드 섹션 (메타 태그)에 정의 된 값을 사용한다고 가정합니다. – Yaron

+0

@ Yaron : JSONP에 익숙하지 않은 Bobean이이 문제를 다루고 있습니다. 파일이 다른 인코딩을 사용하는 비 크로스 도메인 자바 스크립트 시나리오에서이 IE 문제를 보았습니다. – AnthonyWJones