일반적으로 인코딩으로 ks_c_5601-1987 나 euc-kr을 사용하지만 요즘은 유니코드를 지원하는 사이트들이 많아졌습니다.
우리나라의 많은 사이트들이 euc-kr을 사용하고 있지만 앞으로 UTF-8로 많이 옮겨갈 것으로 예측됩니다.
아무튼 여기에서 이야기 하고자 하는 ASP.NET 으로 UTF-8을 지원하는 웹사이트를 개발 할 경우에 주의 해야 할 사항에 대한 것입니다. 웹사이트에서 UTF-8 을 지원 할 경우라도 개발환경은 보통 UTF-8을 지원하는 환경이 아닐 경우가 있습니다.
html 내용과 별도로 구성된 Javascript (.js) 파일과 스타일시트(.css) 파일에서는 문제가 발생합니다.
인라인 스크립트와 스타일은 페이지 소스와 동일한 인코딩이기 때문에 문제가 없습니다. 그리고 별도 파일에 한글이 없는 경우도 문제가 발생하지는 않습니다. (한글을 포함한 파일일 경우 발생합니다. IE에서만..ㅠ.ㅠ)
원인을 찾기 위해 노력했지만 원인과 해결방법은 상당히 간단했습니다.
원인
웹 페이지의 경우 브라우저에서 meta 태그의 정보를 이용해서 인코딩 해서 출력 합니다. 하지만, 기타 파일(js, css...)의 경우 클라이언트의 브라우저 캐쉬로 저장 후 페이지의 출력 인코딩으로 변환하는 과정 없이 저장된 인코딩 방식을 그대로 페이지와 합쳐 파싱을 합니다.
이 때문에 각각의 인코딩 정보가 맞지 않아 한글이 포함된 파일의 내용이 깨지게 됩니다. (브라우저의 처리 방식에 따라 다르겠지만 IE6의 경우는 이와 같은 현상을 보입니다.) FF에서는 파일의 인코딩과 페이지의 인코딩을 맞춰서 파싱을 하기 때문에 정상적으로 처리 됩니다.
해결방법
스크립트를 별도 파일로 저장 할 경우 예를 들어 aaaa.js 라는 파일에 스크립트를 모아서 저장했다고 하면..
이 파일 역시 인코딩을 맞춰서 UTF-8로 저장해야 합니다.
Visual Studio 에서 저장하는 방식은 파일->저장 고급 옵션 에서 인코딩을 설정해서 저장하면 됩니다.
서버 또는 응용 프로그램의 fileEncoding 특성 설정이 UTF-16을 사용하도록 구성되어 있으며 UTF-16이 구성 파일의 범위에 있는 .aspx 페이지에 사용되는 인코딩이 아니면 클라이언트 브라우저로 보내진 출력이 손상되고 페이지의 소스 코드가 표시될 수 있습니다. 구성된 fileEncoding 값이 페이지에 사용된 인코딩과 일치하는지 확인하십시오.와 같이 설명 되어있습니다.
<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" culture="ko-KR" uiCulture="ko-KR"/>
[HTML] 폼값 영문만 입력 받기 (4) | 2005.06.22 |
---|---|
[개발팁] Visual Studio .NET 2003 위저드를 수정해보자!! (0) | 2005.06.21 |
[ASP.NET] SQL을 이용한 ASP.NET 세션관리 설정 방법 (0) | 2005.06.21 |
[.NET&C#] ADO.NET 2.0 Feature Matrix (0) | 2005.06.18 |
[.NET&C#] 구조체를 세션에 저장 할 경우 주의사항 (0) | 2005.06.16 |
[.NET&C#] .NET Programming 이야기를 시작하면서... (0) | 2005.06.15 |
[.NET&C#] Visual C# .NET에서 DataReader를 사용할 때 박싱으로 인한 성능 저하 방지 (0) | 2005.06.11 |
[.NET&C#] .NET 어플리케이션의 아키텍처 구조 가이드 (0) | 2004.12.23 |