Skip to Content
Go Back
안형우

안녕하세요. 14년차 풀스택 웹개발자 안형우입니다. 이 블로그에서는 WordPress, PHP, CSS, 사용성, 리눅스 서버 등 풀스택 웹개발에서 마주하는 다양한 문제 상황과 해결책, 필요한 개념들을 다룹니다. 👉 소개


작업물

📌 워드프레스, 답답한 빌더와 플러그인 대신 시원하게 커스터마징하기(강의) 2023-01-15
📌 아무도 말하지 않는 PHP의 좋은 점 2018-10-13
📌 유지보수하기 쉬운 CSS 전략(슬라이드) 2016-12-20
📌 워드프레스 테마에서 템플릿 파일 매칭 순서 2013-05-12
📌 [번역] CSS 코드 냄새 2013-01-01

[PHP] exec명령 내릴 때 인코딩 설정하기

한글 파일명으로 xlsx 파일들을 생성했다. 그리고 그걸 7z으로 압축했다. 7z 압축은 exec() 함수를 사용했다. 얼레, 그런데 다운받아서 압축을 푸니까 웬걸 한글 파일명이 다 깨진다. 한글 파일명이 깨질까 봐 7z으로 압축한 건데 왜지?!

커맨드라인 locale이 utf-8이 아니기 때문에 벌어진 일이다. exex() 함수는 새로운 터미널 세션을 만들어 실행을 하나 보다. 즉, 내가 터미널에 로그인했을 때와 환경이 같지 않다는 말이다. 그래서 환경설정을 해 줘야 하는데… locale은 아래처럼 PHP 명령을 내려서 설정해 주면 된다.

putenv("LANG=ko_KR.UTF-8");

이렇게 할 수도 있다.

setlocale(LC_ALL, 'ko_KR.utf8');

둘 간의 차이를 찾아 보진 않았다. setlocale 관련해서는 ‘PHP basename등 함수 사용시 한글깨짐(훼손) 문제’ 참고.

안녕하세요. 14년차 풀스택 웹개발자 안형우입니다. 이 블로그에서는 WordPress, PHP, CSS, 사용성, 리눅스 서버 등 풀스택 웹개발에서 마주하는 다양한 문제 상황과 해결책, 필요한 개념들을 다룹니다. 👉 소개


작업물

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다