자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
IdftP에서 한글 깨짐 - Beug 같은데 수정 도 안되고 방법도 없나요 ?
2015.05.15 01:19
'지난번 IDftp에서 한글깨짐 방법없나요'로 질문 한 것입니다. 질의 답변은 받았으나 그걸로 해결 되지 않아 올린 것이 었습니다
이번에는 질의 내용을 자세히 말씀드리는 것이 좋을 것 같네요
(질의 전에 기술 개발 차료를 검색하여 참조 하시라고 한 자료는 이미 검토 했던 것입니다 - 그 내용은 아래에 있습니다.
그 내용이 2012 년도 였고 그때 그 대응방법을 제시 한 분 결론도 향후 Indy에서 수정 보완 할 필요가 있는 건이고 수정 Version이
나오면 그 방법은 불 필요하고 삭제 해야 하는 방법이라고 했습니다.
그래서 이미 2 년이 지나 그후 여러번의 Version Up (Indy도 마찬가지로 Version Up) 이 있어서 이 Burg 가 수정되었는데 내가
알지 못하고 다른 방법으로 해야 하는데 내가 몰라서 그런 건지 잘 몰라 질의 한 것입니다.
관리자 분도 이건 DELPHI Burg 가 아니고개발 기술 문제라고 하고 제품 Burg Q&A / 설치 오류 Q&A 에서 변경 하셔으니 무언가
이 건이 보완 수정되어 (2년전에도 똑 같은 질의 답변들이 있었으니 그 내용을 알고 있었을 거고 그래서 이건 관련 Burg는
보완 수정 된 것을 알고 있어서) 그렇게 말씀 하신 거 아닌 가요 ? 그럼 좀 가르켜 주세요. (관리자분이 DElPHi 잘 모르는 사람은
아닐테니까요)
. 질문 내용을 상세히 설명하고 질의 합니다
질의건은 idFTP.List 에 관한 것이고 Source는 지난번과 동일하게 다음과 같습니다 (Full로 전부 다 COPY 합니다)
procedure TFMYFTP.dataItem_list;
var
c, file_fsize : Integer;
file_Tdate : TdateTime;
str_fsize, wk_header, file_name, file_date : String;
begin
memo1.clear;
DataList.Items.Clear;
idFTP1.List(DataList.Items, '', false);
For c := 0 to DataList.Items.Count -1 Do begin
file_name := DataList.Items[c];
file_size := idFTP1.size(file_name);
if f_size = -1 Then file_type = '폴더(DIR)' else file_type = '일반File ';
if file_size = -1 Then begin // -1 은 Folder
str_fsize := '';
end else begin
s tr_fsize := IntToStr(file_size);
str_fsize := formatFloat('###,##0',strToCurr(str_fsize));
end;
file_Tdate := idFTP1.filedate(DataList.Items[c]);
file_date := FormatDateTime('YYYY-MM-DD hh:nn:ss',file_tdate);
wk_header := file_type + ' ' + file_name + ' ' + str_fsize + ' ' + file_date;
memo1.lines.Add(wk_header);
end;
(※ DataList 는 TListBox 입니다)
질의사항)
① idFtp.List 의 문제점 (idFTP1.List(DataList.Items, '', false);
file_name = DataList.Items(c) 에 한글이 깨져 들어 옵니다 (DataList 의 ListBox에도 Memo1 의 file_name 에도 다 깨져 들어 옵니다
(※ idFTP1.size(file_name).는 정상입니다)
② idFtp.Filedate 의 문제점idFTP1.filedate(DataList.Items[c]);
file_date 도 folder에서는 전부 못가져오고, file 중에서도 어떤 File은 가져오고 어떤 file은 못가져옵니다 - 못가져온 것은
그 이유도 알수 없고요
◑ ① idFtp.List 의 file_name 문제점과 관련
☞ 이전에 알려준 참조자료 적용시: 알려 주신 참조 자료 중 다른 것은 다 적용 해도 안되고 저자가 말하길 임시변통으로 만들었다고
하는 참조:http://couping.blogspot.com/2011/02/2009-indy-ftp-http-or.html 의 것을 적용하면 일부 적용되고 일부 안됩니다.
. 즉 (▶ Funtion OutDataToAnsi(indata : String) String;이 한글 깨짐을 복구 하는 Function 으로 참조 하라는 것입니다 )
즉 상기 Souce에서 file_name 에 대해
file_name := DataList.Items[c];
hangul_fname := OutDataToAnsi(file_name); 을 해주고
.....
wk_header := file_type + ' ' + file_name + ' + hangul_fname + ' ' + str_fsize + ' ' + file_date;
memo1.lines.Add(wk_header);
하면
- File Type 난에 Main Folder (접속한 FTP의 FTP server 의 root Dir) 은 전부 한글 깨진채 이고
(※ FTP root Dir 은 실제 그 Hard ware의 root Dir 일 수 있습니다. 아닌 경우도 있지만...)
그외 Directoty 에서는 전부 한글이 정상으로 되어 나옵니다
(즉 root Dir 의 Folder 의 저장 Information 구조는 기타 Directory 의 것과 약간 다른 점은 이해 하는데 영문은 제대로 읽어 오면서
한글은 안된다는 점음 잘 이해 안됩니다. root Dir의 구조때문이라면 영문의 글자 하나도 날라가야지 정상인데...
file Type은 idFTP.Size 를 가지고 분류해서 내가 붙인것이고)
◑ file_Tdate : 어떤 것은 정상적으로 읽어 오고 어떤 것은 못 가져 옵니다. 또 가져온 것도 맞지 않는데 ....
(idFtp.FileDate(filename)이 해당 file의 생성일시 아닌가요 (DirInfo의 file 작성일자)
이것도 root directory 것은 전부 못 가져 옵니다. 그외는 제멋대로 어떤 것은 가져오고 어떤 것은 못 가져 옵니다.
가져온 일자도 좀 그렇고요
★ 참고: f_size = -1 은 폴더로 분류 했는데 이는 실제 해당 Server 의 실제자료 내용과 일치합니다
그리고 Filedate 는 해당 FTP Server의 실자료에는 다 있습니다
♧자세히 내용을 설명하다 보니 이렇게 길어 졌습니다. 그래서 간단히 그렇게 질의 했는데 내용이 잘 전달 되지 못 했네요
내 생각에는 IDFTP의 Burg 같은데 (아직 기능이 완성되지 못한 Burg) 내가 잘못 알고 있는 거 겠지요 무려 이기능이
나오고 최소 수년이상 지났고 국내에서도 많은 사람이 사용 했을 걸로 생각 되는데
더우기 File_date 문제는 전세계적인 문제인데....
해결 법 제안 꼭 좀 부탁드립니다. 이를 해결 못하면 FTP 이용부분은 계속 DELPHI4.0 을 사용 할 수 있도록 program 구조
를 변경하여 사용해야 하는데 이 또한 여러 어려운 문제가 있습니다.
예를 들어 계약서등 file 자료 는 FTP Server 에 올려두고 이를 조회하여 가져다 첨부 자료로 사용하거나 보내는 경우
에 적용하는등 상당히 많이 사용되는데....
♣Tool 에서 제공 하는 기능이 원래 그 기능 하는데 수행된 결과가 틀릴때는 ① 사용자가 Usage 대로 안했거나 ② 해당 System
(Tool 또는 기능등)의 Burg 입니다. 이 경우는 usage 대로 한것 같은데 결과가 이상하니 개발자용 Q&A 사항이아니라 여기
(공급자(제작사)에 Q&A )올린 것입니다.
상기 질의사항 둘다 Burg로 아직 답이 없고 방법이 없어 정 필요하다면 참조 할 수 있도록 관계되는 다른 사람들의 경험을
제공하여 지원해 주어 일부나마 쓸 수 있도록 하는 것인지 (그리고 Burg 수정 게획은 없는지도) 아니면 사용자가 무었을
어떻게 잘못했는지(그래서 어떻게 하는 것이 바로 사용하는 건지)를 알고 싶기 때문 입니다
참고: 첨부는 INDY10 - IDFTP 관련 INDY 에서 Down 받은 DEMO 프로그램인데 마찬가지 입니다.
원하는 분은 Down 받아 사용 해보세요
File name 이 깨지는데 여기서도 File Name 부분을 Source를 고쳐 Test 해 보실 수 있을 겁니다 .
(한글깨짐 복구 Function 은 참조 하라고 한 :http://couping.blogspot.com/2011/02/2009-indy-ftp-http-or.html 의
Function Source 를 그대로 복사해서 쓰시고요
첨부1 :Indy_10_FTPClient.zip :
Indy site 에서 Down 받은 DEMO Program Source
2. Indy10한글깨짐복구Function.txt :참조하라는 :http://couping.blogspot.com/2011/02/2009-indy-ftp-http-or.html 의
한글 깨짐 복구 Function Source 입니다
질의 ① , ② 좋은 해결 방안 부탁드립니다. Indy10을 안쓰면 FTP에 대해 다른 방안이 없고 ......
댓글 3
IdftP에서 한글 깨짐 - Beug 같은데 수정 도 안되고 방법도 없나요 ?
2015.05.15 01:19
'지난번 IDftp에서 한글깨짐 방법없나요'로 질문 한 것입니다. 질의 답변은 받았으나 그걸로 해결 되지 않아 올린 것이 었습니다
이번에는 질의 내용을 자세히 말씀드리는 것이 좋을 것 같네요
(질의 전에 기술 개발 차료를 검색하여 참조 하시라고 한 자료는 이미 검토 했던 것입니다 - 그 내용은 아래에 있습니다.
그 내용이 2012 년도 였고 그때 그 대응방법을 제시 한 분 결론도 향후 Indy에서 수정 보완 할 필요가 있는 건이고 수정 Version이
나오면 그 방법은 불 필요하고 삭제 해야 하는 방법이라고 했습니다.
그래서 이미 2 년이 지나 그후 여러번의 Version Up (Indy도 마찬가지로 Version Up) 이 있어서 이 Burg 가 수정되었는데 내가
알지 못하고 다른 방법으로 해야 하는데 내가 몰라서 그런 건지 잘 몰라 질의 한 것입니다.
관리자 분도 이건 DELPHI Burg 가 아니고개발 기술 문제라고 하고 제품 Burg Q&A / 설치 오류 Q&A 에서 변경 하셔으니 무언가
이 건이 보완 수정되어 (2년전에도 똑 같은 질의 답변들이 있었으니 그 내용을 알고 있었을 거고 그래서 이건 관련 Burg는
보완 수정 된 것을 알고 있어서) 그렇게 말씀 하신 거 아닌 가요 ? 그럼 좀 가르켜 주세요. (관리자분이 DElPHi 잘 모르는 사람은
아닐테니까요)
. 질문 내용을 상세히 설명하고 질의 합니다
질의건은 idFTP.List 에 관한 것이고 Source는 지난번과 동일하게 다음과 같습니다 (Full로 전부 다 COPY 합니다)
procedure TFMYFTP.dataItem_list;
var
c, file_fsize : Integer;
file_Tdate : TdateTime;
str_fsize, wk_header, file_name, file_date : String;
begin
memo1.clear;
DataList.Items.Clear;
idFTP1.List(DataList.Items, '', false);
For c := 0 to DataList.Items.Count -1 Do begin
file_name := DataList.Items[c];
file_size := idFTP1.size(file_name);
if f_size = -1 Then file_type = '폴더(DIR)' else file_type = '일반File ';
if file_size = -1 Then begin // -1 은 Folder
str_fsize := '';
end else begin
s tr_fsize := IntToStr(file_size);
str_fsize := formatFloat('###,##0',strToCurr(str_fsize));
end;
file_Tdate := idFTP1.filedate(DataList.Items[c]);
file_date := FormatDateTime('YYYY-MM-DD hh:nn:ss',file_tdate);
wk_header := file_type + ' ' + file_name + ' ' + str_fsize + ' ' + file_date;
memo1.lines.Add(wk_header);
end;
(※ DataList 는 TListBox 입니다)
질의사항)
① idFtp.List 의 문제점 (idFTP1.List(DataList.Items, '', false);
file_name = DataList.Items(c) 에 한글이 깨져 들어 옵니다 (DataList 의 ListBox에도 Memo1 의 file_name 에도 다 깨져 들어 옵니다
(※ idFTP1.size(file_name).는 정상입니다)
② idFtp.Filedate 의 문제점idFTP1.filedate(DataList.Items[c]);
file_date 도 folder에서는 전부 못가져오고, file 중에서도 어떤 File은 가져오고 어떤 file은 못가져옵니다 - 못가져온 것은
그 이유도 알수 없고요
◑ ① idFtp.List 의 file_name 문제점과 관련
☞ 이전에 알려준 참조자료 적용시: 알려 주신 참조 자료 중 다른 것은 다 적용 해도 안되고 저자가 말하길 임시변통으로 만들었다고
하는 참조:http://couping.blogspot.com/2011/02/2009-indy-ftp-http-or.html 의 것을 적용하면 일부 적용되고 일부 안됩니다.
. 즉 (▶ Funtion OutDataToAnsi(indata : String) String;이 한글 깨짐을 복구 하는 Function 으로 참조 하라는 것입니다 )
즉 상기 Souce에서 file_name 에 대해
file_name := DataList.Items[c];
hangul_fname := OutDataToAnsi(file_name); 을 해주고
.....
wk_header := file_type + ' ' + file_name + ' + hangul_fname + ' ' + str_fsize + ' ' + file_date;
memo1.lines.Add(wk_header);
하면
- File Type 난에 Main Folder (접속한 FTP의 FTP server 의 root Dir) 은 전부 한글 깨진채 이고
(※ FTP root Dir 은 실제 그 Hard ware의 root Dir 일 수 있습니다. 아닌 경우도 있지만...)
그외 Directoty 에서는 전부 한글이 정상으로 되어 나옵니다
(즉 root Dir 의 Folder 의 저장 Information 구조는 기타 Directory 의 것과 약간 다른 점은 이해 하는데 영문은 제대로 읽어 오면서
한글은 안된다는 점음 잘 이해 안됩니다. root Dir의 구조때문이라면 영문의 글자 하나도 날라가야지 정상인데...
file Type은 idFTP.Size 를 가지고 분류해서 내가 붙인것이고)
◑ file_Tdate : 어떤 것은 정상적으로 읽어 오고 어떤 것은 못 가져 옵니다. 또 가져온 것도 맞지 않는데 ....
(idFtp.FileDate(filename)이 해당 file의 생성일시 아닌가요 (DirInfo의 file 작성일자)
이것도 root directory 것은 전부 못 가져 옵니다. 그외는 제멋대로 어떤 것은 가져오고 어떤 것은 못 가져 옵니다.
가져온 일자도 좀 그렇고요
★ 참고: f_size = -1 은 폴더로 분류 했는데 이는 실제 해당 Server 의 실제자료 내용과 일치합니다
그리고 Filedate 는 해당 FTP Server의 실자료에는 다 있습니다
♧자세히 내용을 설명하다 보니 이렇게 길어 졌습니다. 그래서 간단히 그렇게 질의 했는데 내용이 잘 전달 되지 못 했네요
내 생각에는 IDFTP의 Burg 같은데 (아직 기능이 완성되지 못한 Burg) 내가 잘못 알고 있는 거 겠지요 무려 이기능이
나오고 최소 수년이상 지났고 국내에서도 많은 사람이 사용 했을 걸로 생각 되는데
더우기 File_date 문제는 전세계적인 문제인데....
해결 법 제안 꼭 좀 부탁드립니다. 이를 해결 못하면 FTP 이용부분은 계속 DELPHI4.0 을 사용 할 수 있도록 program 구조
를 변경하여 사용해야 하는데 이 또한 여러 어려운 문제가 있습니다.
예를 들어 계약서등 file 자료 는 FTP Server 에 올려두고 이를 조회하여 가져다 첨부 자료로 사용하거나 보내는 경우
에 적용하는등 상당히 많이 사용되는데....
♣Tool 에서 제공 하는 기능이 원래 그 기능 하는데 수행된 결과가 틀릴때는 ① 사용자가 Usage 대로 안했거나 ② 해당 System
(Tool 또는 기능등)의 Burg 입니다. 이 경우는 usage 대로 한것 같은데 결과가 이상하니 개발자용 Q&A 사항이아니라 여기
(공급자(제작사)에 Q&A )올린 것입니다.
상기 질의사항 둘다 Burg로 아직 답이 없고 방법이 없어 정 필요하다면 참조 할 수 있도록 관계되는 다른 사람들의 경험을
제공하여 지원해 주어 일부나마 쓸 수 있도록 하는 것인지 (그리고 Burg 수정 게획은 없는지도) 아니면 사용자가 무었을
어떻게 잘못했는지(그래서 어떻게 하는 것이 바로 사용하는 건지)를 알고 싶기 때문 입니다
참고: 첨부는 INDY10 - IDFTP 관련 INDY 에서 Down 받은 DEMO 프로그램인데 마찬가지 입니다.
원하는 분은 Down 받아 사용 해보세요
File name 이 깨지는데 여기서도 File Name 부분을 Source를 고쳐 Test 해 보실 수 있을 겁니다 .
(한글깨짐 복구 Function 은 참조 하라고 한 :http://couping.blogspot.com/2011/02/2009-indy-ftp-http-or.html 의
Function Source 를 그대로 복사해서 쓰시고요
첨부1 :Indy_10_FTPClient.zip : Indy site 에서 Down 받은 DEMO Program Source
2. Indy10한글깨짐복구Function.txt :참조하라는 :http://couping.blogspot.com/2011/02/2009-indy-ftp-http-or.html 의
한글 깨짐 복구 Function Source 입니다
질의 ① , ② 좋은 해결 방안 부탁드립니다. Indy10을 안쓰면 FTP에 대해 다른 방안이 없고 ......
인디는 써드파티 컴포넌트로 델파이에 포함되어 있으며, 모든 기능을 지원할 수는 없습니다.
한글 문제는 IdFTP 컴포넌트에서 자동 인코딩 기능을 지원하지 않아 발생하는 이슈이며 다음과 같이 해결해보시기 바랍니다.
IdFTP1.Connect;
IdFTP1.IOHandler.DefStringEncoding := IndyTextEncoding(949);
FTP 연결 이후 인코딩을 한글(CP949)로 설정한 것입니다.
http://xiles.tistory.com/327
다른 내용도 진행해 보시기 바랍니다.
(해당글은 개발자 Q&A로 옮기겠습니다.)