티스토리 뷰

728x90
반응형

 포스팅은 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
반응형