티스토리 뷰
참조 URL : http://betterthanyesterday.textcube.com/7
1. java, jsp 소스 파일내의 다국어 표시
java, jsp 소스 파일의 인코딩과 JVM 실행시 -Dfile.encoding이 일치하지일치하지 않으면 소스 파일내의 한글이 제대로 표시되지 않는다.
따라서 -Dfile.encoding값을 모든 경우에 무조건 EUC-KR로만 지정해서는 안된다.
publicpublic class Tester {
public static void main(String[] args) {{
String fileEncoding=System.getProperty("file.encoding");
System.out.println("file.encoding = "+fileEncoding);"+fileEncoding);
String s="가나다";
System.out.println("s = "+s);"+s);
}
}
위 java 소스를 여러가지 case에서 실행한 결과는결과는 다음과 같다.
Case 1.
java 소스 파일 인코딩인코딩 : MS949
-Dfile.encoding : MS949(Windows default) or EUC-KR
==> 실행실행 결과
file.encoding = EUC-KR
s = 가나다
Case 2.
java 소스 파일 인코딩 : MS949
-Dfile.encoding : UTF-8
(ex. Windows에서 개발한 소스를, Linux에서 -Dfile.encoding을 명시하지 않고 실행)
==>==> 실행 결과
file.encoding = UTF-8
s = 媛??섎떎
Case 3.
java 소스 파일 인코딩 : UTF-8
-Dfile.encoding : UTF-8UTF-8
==> 실행 결과
file.encoding = UTF-8
s = 가나다가나다
Case 4.
java 소스 파일 인코딩 : UTF-8UTF-8
-Dfile.encoding : EUC-KR
==> 실행 결과
file.encoding = EUC-KREUC-KR
s =
(아예 콘솔에서 보이지 않는다.)
-------------------------------------------------------------------------------
2. 문자열 IO처리시 다국어 표시
파일이나파일이나 소켓 등으로 문자열 IO처리시, 문자열의 default charset은 -Dfile.encoding의 값을 따른다
new String(byte[] b) 또는 String getBytes() 실행시에도 default charset은charset은 -Dfile.encoding의 값을 따른다
public class EncodingTester1 {
public static void main(String[] args)throws Exception {
String String fileEncoding=System.getProperty("file.encoding");
System.out.println("file.encoding = "+fileEncoding);
InputStream is=new FileInputStream("c:/temp/kor.txt");
//Default charset은 file.encoding값을 따르게 된다
//만약 kor.txt 파일의 인코딩이 file.encoding과 다른 경우에는 한글이 깨져깨져 보인다
BufferedReader default_reader=new BufferedReader(new InputStreamReader(is));
//아래와 같이같이 InputStreamReader가 아닌 Reader를 사용하는 경우에는 항상 file.encoding값을 따른다
//BufferedReader default_reader=new BufferedReader(new FileReader("c:/temp/kor.txt"));
String kor=default_reader.readLine();
System.out.println("Default >> "+kor);"+kor);
is=new FileInputStream("c:/temp/kor.txt");
BufferedReader euc_reader=new BufferedReader(new InputStreamReader(is, "EUC-KR"));
kor=euc_reader.readLine();
System.out.println("EUC-KR >> "+kor);
is=new FileInputStream("c:/temp/kor.txt");
//kor.txt 파일의 인코딩이 file.encoding과 다른 경우에는 아래와 같이같이 charset을 명시해 주어야 한다
BufferedReader utf8_reader=newutf8_reader=new BufferedReader(new InputStreamReader(is, "UTF-8"));
kor=utf8_reader.readLine();
System.out.println("UTF-8 >> "+kor);
is=new is=new FileInputStream("c:/temp/kor.txt");
BufferedReader eng_reader=new BufferedReader(new InputStreamReader(is, "ISO-8859-1"));
kor=eng_reader.readLine();
System.out.println("ISO-8859-1 >> "+kor);
}
}
Case 1.
kor.txtkor.txt 파일 인코딩 : MS949
-Dfile.encoding : MS949
==> 실행 결과결과
file.encoding = MS949
Default >> 가나다라
EUC-KR >> 가나다라
UTF-8 >>>> ???????
ISO-8859-1 >> °¡³ª´?¶?
Case 2.
kor.txt 파일파일 인코딩 : UTF-8
-Dfile.encoding : MS949 or EUC-KR
==> 실행실행 결과
file.encoding = MS949
Default >> 媛???ㅻ
EUC-KR >> 媛???ㅻ?
UTF-8UTF-8 >> 가나다라
ISO-8859-1 >> ?°??굹?떌?씒?
'WEB,WAS > WAS' 카테고리의 다른 글
[Tomcat/JSP] GET방식 한글 깨질 경우 (0) | 2011.01.10 |
---|---|
[Tomcat] server.xml (0) | 2010.07.26 |
[Tomcat] Access Log 설정 (0) | 2010.07.05 |
[Tomcat] Access Log Pattern (0) | 2010.07.05 |
[JEUS] SAP연동 (0) | 2010.03.06 |
[JEUS] tomcat에서 잘되었던게 JEUS에서 다운로드할때 한글 깨질경우 (0) | 2010.03.05 |
[JEUS] jeus.servlet.jsp.modern 설정 (0) | 2010.03.05 |
web.xml의 PackageSeparator(구분자) 설정 (0) | 2010.03.05 |
- Total
- Today
- Yesterday
- JVM
- Password manager
- iTerm2
- URL Encoding
- DevOps
- PostgreSQL
- nginx
- 리눅스
- 데브옵스
- Linux
- 파이프라인
- rsync
- 엔서블
- groovy
- 젠킨스
- 쓰레드덤프
- Jenkins
- Shell Script
- Nexus
- Playbook
- openssl
- vagrant
- 엔시블
- rundeck
- Thread Dump
- Ansible
- Docker
- Config History
- 플레이북
- ssl
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |