반응형
PHP exec()로 java 실행해서 파일 저장할때 한글 깨짐 문제 해결
PHP코드에서 exec()를 이용해 java jar를 실행할때 한글이 깨지는 문제로 일주일을 고생했습니다
검색해보니 저와 비슷한 문제로 질문글 들이 있었으나.. 해결을 했다는 답변이 없어 서더욱 힘들었습니다
- http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_function&wr_id=358370&sca=&sfl=wr_subject%7C%7Cwr_content&stx=%C0%CE%C4%DA%B5%F9&sop=and
- http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_other&wr_id=125889&sca=&sfl=wr_subject%7C%7Cwr_content&stx=&sop=and
- 제가 질문한 글 http://www.okjsp.net/seq/257685 - 답변이 달리지 못했습니다
제가 가진 문제점은
- php코드 내에서 아래와 같이 실행을 합니다
(%ED%95%9C%EA%B8%80는 "한글"을 URL인코딩한 값)
exec("java -jar myjava.jar %ED%95%9C%EA%B8%80");
- myjava.jar에서 하는 일은
String hanVar = URLDecoder.decode(arg[0], "utf-8"); // %ED%95%9C%EA%B8%80 -> 한글
System.out.println(hanVar ); //모든 경우에 한글로 잘 출력됩니다
ImageIO.write(srcImageBuffer, "gif", new File(hanVar)); // hanVar이름으로 파일 저장
java -Dfile.encoding=utf-8 -jar myjava.jar %ED%95%9C%EA%B8%80
이 명령을 리눅스 shell에서 실행하면 한글파일로 저장이 잘 됩니다
그러나 문제는 php에서 exec()로 실행하면 한글 파일이 ???로 저장됩니다
이 명령을 리눅스 shell에서 실행하면 한글파일로 저장이 잘 됩니다
그러나 문제는 php에서 exec()로 실행하면 한글 파일이 ???로 저장됩니다
해결의 실마리는 locale명령어였습니다
리눅스에 ssh로 접속해서 locale명령을 하면 다음과 같습니다
(www-data는 Apache서버 user로 보여 같이 확인했습니다)
모두 utf-8로 잘 나옵니다
그러나..
php에서 exec("locale")를 하니 다음과 같이 나왔습니다
LANG=C로 시스템 디폴트 값을 쓴다고 설정되어 있습니다
PHP에서 exec()로 실행할때 설정된 인코딩이 달라 문제였습니다
해결 방법은 간단했습니다
exec("export LANG=\"ko_KR.utf8\";locale";<추가 명령어>) 이런식으로 명령 앞에 인코딩을 변경하는 문을 날리고 뒤에 필요한 명령을 하면 한글표시가 잘 되었습니다 (중간에 들어있는 locale는 확인하기위한 명령으로 나중에는 제외해도 됩니다)
이렇게 설정하고 나서는 한글파일 이름으로 잘 저장 되었습니다
반응형
'보물창고 > Programming' 카테고리의 다른 글
라즈베리파이와 아두이노 RF315/433 송수신 코드 정리 raspberry arduino (0) | 2015.04.24 |
---|---|
aliexpress 아두이노 라즈베리파이 무선 통신 부품 구입 릴레이 RF315/433 (0) | 2015.04.13 |
아두이노 프로 미니 호환 구입기 arduino pro mini compatible aliexpress 직구 구입기 (0) | 2015.03.30 |
스프링 공부 스터디 [유튜브 쉬운 스프링 이야기 Kenu Heo] 동영상 강의 메타 정보 (1) | 2014.12.21 |
Maven에대한 기본개념 다지기 (링크만 있음) (0) | 2013.01.02 |
VirtualBox + Ubunto VirtualBox Guest Addtion 설치 안될때(버추얼4.2.4 박스 우분투12.04) (0) | 2012.11.17 |
IIS 모듈 스터디 (0) | 2012.11.14 |
자바누리 Java 강좌 소개 - [링크] (자바 스터디, 공부) (2) | 2012.11.13 |