티스토리 뷰

728x90
반응형
728x170

 포스팅은 Encoding 관련 우선순위 테스트입니다.


Request Encoding, Response Encoding 각각 우선순위에 대한 테스트를 수행할 예정입니다.

 

먼저 Request Encoding 우선순위 테스트입니다.

JEUS의 Encoding

JEUS Encoding의 종류

- Request-Encoding

브라우져 등으로 부터 받은 인코딩 값을 인식하는 방식

옵션으로는 forced, default 가 있다. (get 방식)

- Postdata-Encoding

브라우져 등으로 부터 받은 인코딩 값을 인식하는 방식

옵션으로는 forced, default 가 있다. (post 방식)

- Response-Encoding

인코딩 된 값을 호출된 페이지에 담아 출력할 때 인코딩하는 방식 

 

- 서비스 요청 시 Data의 흐름과 Encoding



 

TEST 환경

- Windows XP Professional Ver.2002 ServicePack 2

- WebtoB 4.1 / JEUS5.0 Fix 20

- 테스트를 위한 JSP 파일 2개.


test.jsp : 브라우져에서 요청값을 인코딩해 넘기기 위한 소스 파일

 

 

ttt.jsp   : JEUS에서 response-encoding 된 내용을 브라우져에 출력하기 위한 소스 파일.

 

- test.jsp 호출 화면

 

- tts.jsp 호출 화면



Request-Encoding Test

Request-Encoding 적용 우선 순위

a. WEBMain.xml 에 정의된 "forced" 인코딩

b. 요청의 Accept-Language 요청 필드

c. WEBMain.xml 에 정의된 "default" 인코딩

d. 아무런 적용이 없을 시,  "ISO-8859-1"

 

Case 1 . JEUS에서 <forced> 옵션을 사용 

1–1. 소스 인코딩이 UTF-8 이고 JEUS 의 <request-encoding>에 <forced>가 UTF-8 일 때


 

호출 시


 

 

Case 1 . JEUS에서 <forced> 옵션을 사용 

1–2. 소스 인코딩이 EUC-KR 이고 JEUS <forced>가 EUC-KR, <default>가 UTF-8 일 때


호출 시


 

Case 1 . JEUS에서 <forced> 옵션을 사용 

1–3. 소스 인코딩이 EUC-KR 이고 JEUS <forced>가 UTF-8 일 때


 

호출 시


 

Case 2. JEUS에서 <default> 옵션을 사용, Accept-Language 적용 상태를 Test 

2–1. 소스 인코딩이 EUC-KR, Accept-Language가 ko 이고 JEUS <default>가 UTF-8 일 때


 

호출 시


 

 

Case 2. JEUS에서 <default> 옵션을 사용, Accept-Language 적용 상태를 Test 

2–2. 소스 인코딩이 EUC-KR, Accept-Language가 null 이고 JEUS <default>가 UTF-8 일 때


 

Accept-Language를 지우는 작업

 

※ “도구-인터넷옵션-일반-언어” 에서 한국어 설정을 제거

호출 시


 

 

Case 3. JEUS에서 <default> 옵션을 사용, 적용 상태를 Test 

3–1. 소스 인코딩이 UTF-8, Accept-Language가 null 이고 JEUS <default>가 UTF-8 일 때


 

호출 시


 

 

Case 3. JEUS에서 <default> 옵션을 사용, 적용 상태를 Test 

3–2. 소스 인코딩이 EUC-KR, Accept-Language가 null 이고 JEUS <default>가 UTF-8 일 때


 

호출 시


 

 

Case 4. JEUS, Accept-Language 에 아무런 설정이 없을때, 적용 상태를 Test 

4–1. 소스 인코딩이 EUC-KR, JEUS에 인코딩 관련 아무런 설정이 없을 때


 

호출 시


※ IE에서 ISO-8859-1은 영문자를 제외한 모든 글자가 깨진다.

 

Case 4. JEUS, Accept-Language 에 아무런 설정이 없을때, 적용 상태를 Test 
4 – 2. 소스 인코딩이 UTF-8, JEUS에 인코딩 관련 아무런 설정이 없을 때

 

호출 시
 


 

테스트 결론입니다.

Request-Encoding Test

Request-Encoding 적용 우선 순위

a. WEBMain.xml 에 정의된 "forced" 인코딩

b. 요청의 Accept-Language 요청 필드

c. WEBMain.xml 에 정의된 "default" 인코딩

d. 아무런 적용이 없을 시,  "ISO-8859-1"

 

2. Response Encoding 우선순위 테스트

JEUS의 Encoding

JEUS Encoding의 종류

- Request-Encoding

브라우져 등으로 부터 받은 인코딩 값을 인식하는 방식

옵션으로는 forced, default 가 있다. (get 방식)

- Postdata-Encoding

브라우져 등으로 부터 받은 인코딩 값을 인식하는 방식

옵션으로는 forced, default 가 있다. (post 방식)

- Response-Encoding

인코딩 된 값을 호출된 페이지에 담아 출력할 때 인코딩하는 방식 

- 서비스 요청 시 Data의 흐름과 Encoding

 

마찬가지로 Response Encoding 역시 테스트를 수행하였으며, 결론은 다음과 같습니다.

Response-Encoding의 적용 우선 순위

a. WEBMain.xml 에 정의된 "forced" 인코딩

b. Servlet 에서의 Setting ("...text/html;charset=XXX" 으로 개발자가 설정한 XXX 값 )

c. WEBMain.xml 에 정의된 "default" 인코딩

d. 아무런 적용이 없을 시,  "ISO-8859-1"

 

무작정 깨지는 인코딩 문제를 어떻게 해야 할지 갈팡 질팡 하던 기억이 있습니다. 물론 이러한 문제를 유발하기에 앞서 인코딩은 모두 통일하는 것이 좋다는 것을 말씀드리면서 포스팅을 마치도록 하겠습니다.

고맙습니다.


728x90
반응형
그리드형
댓글
댓글쓰기 폼