질문 Q #8821
[초보]다운로드 할때 파일명
헛발이 2010-02-23 14:47:10
현재 UTF-8로 만들고 잇꼬...
업로드 할때 원래 파일명을 UTF-8로 저장합니다..

그리고 다운로드 할때 UTF로 합니다.
그런데 이상하게 다운로드 할때 파일명이 깨지네요...

더 우낀건 IE에서는 깨지고 파폭에선 안 깨지고...

그래서 urlencode를 해 봅니다..

그러면 반대로 IE에서 안 깨지고 파폭에선 깨지네요...

더더 우낀건 크롬은 urlencode를 안해도 안 깨지고 해도 안 깨지네요..

뭘 잘못한걸까요 ...
답변 10
#1 kirrie 2010-02-23 15:56:28
ie가 바보입니다.
euc-kr로 파일명을 통일하세요. ff는 utf-8이나 euc-kr(cp949) 모두 잘 받는데, ie만 그러더군요.
#2 헛발이 2010-02-23 16:16:46
음...그러면 마지막 단계 다운 받기 바로 전에
mb_convert_encoding($file_name, 'utf-8', 'euc-kr')로 변경 하면 된다는건가요?
아니면 DB에 값을 넣을때 euc-kr로 하면 된다는건가요?

#3 kirrie 2010-02-23 16:19:35
파일을 어떤 식으로 다운로드 하나요? force_download를 통해서 다운로드 하도록 작성하셨다면, 파일명을 넘기는 부분에서 euc-kr(cp949)로 넘기면 된다는 말씀입니다. ^^
#4 헛발이 2010-02-23 16:21:02

마지막 단계에서
 

force_download(mb_convert_encoding($file_name, 'utf-8', 'euc-kr'), $filedata);


이렇게 해 봤는데 깨지는데요....

제가 조금 테스트 해 보니깐요...IE만 그런거 같지 않은데요..
파폭하고 크롬은 utf-8로 잘 되는데..

IE랑 사파리(원도용)는 깨지는군요...

음...워쩐데요... ㅡ.ㅡ;;

#5 kirrie 2010-02-23 17:59:20
http://kr.php.net/manual/kr/function.mb-convert-encoding.php

mb_convert_encoding 인자 순서가 바뀐듯.
#6 kirrie 2010-02-23 18:00:16
force_download(mb_convert_encoding($file_name, 'euc-kr', 'utf-8'), $filedata);
#7 헛발이 2010-02-23 18:14:29
아 순서가 ㅋㅋㅋ 해보니 되네요 .. 감사합니다... 이렇게 고마울때가 없네요...
저는 업무상 euc-kr은 아니고
이렇게 하니 되네요..
force_download(mb_convert_encoding($file_name, 'shift-jis', 'utf-8'), $filedata);

혹시 shift-jis쓰시는 분 참조 하세요~ ^^;;
#8 최용운 2010-02-24 11:25:57
아 ... 좋은팁입니다... php 코딩안한지가 오래되어서 다 까먹었어요 ..답변을 달고 싶어도 못다는 신세 .ㅠㅠ
#9 홍구2 2013-02-14 18:32:25
 감사합니다.
#10 2전산2 2013-07-26 04:11:29
 감사합니다. ㅎㅎㅎ 도움 많이 됬어요~!