본문 바로가기
Tip Scrapbook, ETC

[chrome] 크롬 브라우저에서 Locale.getDefault, getDisplayCountry, getCountry 값이 null인 경우

by breezyday 2022. 6. 29.

조금은 특이한 오류가 발견되어 정리합니다.

 

크롬 브라우저에서 Locale 설정이 제대로 먹지 않는 현상입니다.

 

jsp에서 태그 라이브러리로 금액을 출력하는 테스트를 하고 있는데 아무리 해도 아래 코드에서  <fmt:formatNumber value=".." type="currency"/> 부분의 결과로 이상한 기호의 화폐 단위가 출력되는 현상을 보고, 테스트해서 발견했습니다.

 

1. 문제 확인

// JSP 코드
//

로케일 언어 :     <%=request.getLocale() %><br/>
로케일 언어 코드: <%=request.getLocale().getLanguage() %><br/>
로케일 국가 :     <%=request.getLocale().getDisplayCountry() %><br/>
로케일 국가코드 : <%=request.getLocale().getCountry() %><br/>
기본값 :          <%=request.getLocale().getDefault() %>

...
<fmt:formatNumber value="${cartVO.price2}" type="currency"/> 
...
<fmt:formatNumber value="${cartVO.price2*cartVO.quantity}" type="currency"/> 
...
<fmt:formatNumber value="${totalPrice}" type="currency"/>
...

 

캡처 화면은 아래와 같습니다.

 

크롬 브라우저

 

크롬에서는 로케일 국가, 로케일 국가코드빈칸으로 나옵니다. 덕분에 금액 부분이 이상하게 표시됩니다. 

아래 파이어 폭스에서는 로케일 국가, 로케일 국가코드가 정상적으로 대한민국, KR로 조회가 됩니다. 원하던 결과입니다.

 

파이어 폭스 브라우저

 

2. 원인

출력 오류의 원인은 로케일의 국가 코드값크롬 브라우저에서는 제대로 넘어오지 않는 현상이었습니다.

stackoverflow에서도 드문 현상인데, 어떤 이유에서 Locale.setDefault()가 호출되어서 그런 현상이라고 나와있고, ImagePicker라는 프로그램 때문이라는 설명도 있었습니다. 

 

아마도 확장 프로그램이나 설정에 의한 문제로 의심이 되어 아래와 같이 조치하였습니다.

 

3. 해결 방법 : 크롬 설정 초기화

 

크롬의 메뉴에서 설정 > 재설정 및 정리하기로 들어가거나,

주소창에 'chrome://settings/reset'을 입력하여 아래 설정 화면으로 들어갑니다.

 

 

'설정을 기본값으로 복원'을 클릭하고 '설정 초기화버튼을 눌러 초기화합니다.

 

 

이제 크롬에서도 Locale에서 국가 설정 부분이 정상적으로 조회됩니다.

재현해보려고 확장 프로그램들을 껐다 켰다 해봤지만 어떤 것이 원인인지 위의 현상을 재현할 수는 없었습니다. ㅠ_ㅠ

 

만약 Locale에서 국가 관련 설정이 정상적으로 조회되지 않는 현상이 크롬에서 발견되면, 브라우저 설정을 초기화해보시기 바랍니다.

 

 

 

 

 

댓글