최근에 작업하던 시스템에서 거래 시스템은 UTF-8 인코딩을 사용하는 반면 일부 지원 시스템은 GB2312 인코딩을 사용하는 데 문제가 발생했습니다.
인코딩이 다른 페이지와 스크립트가 서로 참조하는 경우 문자 깨짐 현상이 발생합니다. 해결 방법은 이를 하나의 인코딩으로 통합하는 것입니다.
asp.net에서 출력 페이지의 인코딩을 수정하려면 web.config에서 다음 구성 정보를 수정하면 됩니다.
<세계화 requestEncoding="utf-8" responseEncoding="utf-8" />
위의 내용은 전체 기본 인코딩을 수정하는 것입니다. 특정 페이지의 인코딩만 수정해야 하는 경우 ASP.net에서 다음 코드를 사용하면 됩니다.
참고: Page_Load() 이벤트 아래에 추가하기만 하면 됩니다.
인코딩 gb2312 = Encoding.GetEncoding("gb2312");
Response.ContentEncoding = gb2312;
ASP.net이 아닌 응용 프로그램에서 읽을 수 있는 데이터는 UTF-8로 인코딩되어 있지만 GB2312 인코딩으로 변환하려면 다음 코드를 참조하세요.
string utfinfo = "document.write("alert('잘 지내세요??');");";
문자열 gb2312info = string.Empty;
인코딩 utf8 = Encoding.UTF8;
Encoding gb2312 = Encoding.GetEncoding("gb2312");
// 문자열을 byte[]로 변환합니다.
byte[] unicodeBytes = utf8.GetBytes(utfinfo);
// 한 인코딩에서 다른 인코딩으로 변환을 수행합니다.
byte[] asciiBytes = Encoding.Convert(utf8, gb2312, unicodeBytes);
// 새 byte[]를 char[]로 변환한 다음 문자열로 변환합니다.
// 이는 설명으로 변환하는 것과 약간 다른 접근 방식입니다.
// GetCharCount/GetChars 사용.
char[] asciiChars = 새로운 char[gb2312.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
gb2312.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
gb2312info = new string(asciiChars);
물론 다양한 인코딩 간의 변환은 위 코드와 유사하므로 설명하지 않겠습니다.