Microsoft MVP성태의 닷넷 이야기
c# 압축파일 읽어 올 때 BinaryRead 한글 처리 문제 [링크 복사], [링크+제목 복사],
조회: 12324
글쓴 사람
김영식 (nukkims85 at gmail.com)
홈페이지
첨부 파일
 

using (var fileStream = File.OpenRead( filePath ) )
using (var bodyStream = new ZlibStream( fileStream, CompressionMode.Decompress))
using (var bodyReader = new BinaryReader(bodyStream))
{
   fileStream.Seek(header.FileTablePosition + 8, SeekOrigin.Begin);
   for (int i = 0; i < header.FileCount; i++)
   {
      var fileName = string.Empty;
      char currentChar;
      while ((currentChar = (char)bodyReader.ReadByte()) != 0)
      {
         fileName += currentChar;
      }
   }
   .
   .
   .
}

위의 코드는 윈도우에서 압축파일을 BinaryReader의 ReadByte()를 이용해 byte단위로 읽어 와서 char형으로 변환하고
그걸 합해서 file이름으로 가져오는 부분인데요. 이걸 실행하면 파일이름이 한글로 되어 있으면 깨져 나옵니다. currentChar를 누적하니까
당연한거 같기도 합니다.

일단 BinaryReader(bodyStream)의 인코딩 옵션을 줘봤는데 안되더군요. 뭐 당연한거 같습니다만.

그리고 최종 fileName값의 인코딩 변환

Encoding utf8 = Encoding.UTF8;
byte[] utf8Bytes = utf8.GetBytes(fileName);
Han_FileName = utf8.GetString(utf8Bytes);

이렇게 수정해 디버그 상태에서 값을 봤는데 안되내요.

저 부분을 어떻게 수정하면 한글 파일이름을 인식하게 할 수 있을까요?













[최초 등록일: ]
[최종 수정일: 12/26/2022]


비밀번호

댓글 작성자
 



2022-12-27 01시27분
그런 경우 Decoder를 쓰는 것이 좋지 않을까요?

한글이 포함된 바이트 배열을 나눈 경우 한글이 깨지지 않도록 다시 조합하는 방법
; https://www.sysnet.pe.kr/2/0/11378

아니면, byte로 읽어 char로 즉시 변환하지 말고 모두 읽은 다음에 Decoding을 해야 합니다.
정성태

... 76  77  78  79  80  81  82  83  84  85  86  87  88  89  [90]  ...
NoWriterDateCnt.TitleFile(s)
207정성태6/14/200511263    답변글 [답변]: 태오 사이트 Smart Client 강좌중에서요
210나그네6/15/200511511        답변글 [답변]: [답변]: 태오 사이트 Smart Client 강좌중에서요파일 다운로드1
198이지훈6/2/2005106352003이랑 2005랑 함께 사용하는 방법이 없을까요?
201정성태6/6/200511511    답변글 [답변]: 2003이랑 2005랑 함께 사용하는 방법이 없을까요?
197이지훈6/2/2005114002005 에서 컴포넌트 제작
200정성태6/6/200511013    답변글 [답변]: 2005 에서 컴포넌트 제작
196김종욱5/24/200512075익스플러 툴 벤드 제작... for .NET [1]파일 다운로드1
199정성태6/6/200511541    답변글 [답변]: 익스플러 툴 벤드 제작... for .NET
202김종욱6/9/200512328        답변글 [답변]: [답변]: 익스플러 툴 벤드 제작... for .NET [1]
194홍지철5/18/200511163IE에서 Winform control embedded작성시 문제점
195정성태5/19/200511867    답변글 [답변]: IE에서 Winform control embedded작성시 문제점
192헤헤5/13/200511505이것좀봐주세요
193정성태5/13/200510426    답변글 [답변]: 이것좀봐주세요
186기범5/9/200511101안녕하세요2
187정성태5/9/200511579    답변글 [답변]: 안녕하세요2
184기범5/9/200511034안녕하세요
185정성태5/9/200511437    답변글 [답변]: 안녕하세요
1815/8/200511055// 꼭쫌 답변해 주세요~~~클라이언트 서버 ... 내용, 이점 들...
183정성태5/9/200510543    답변글 [답변]: // 꼭쫌 답변해 주세요~~~클라이언트 서버 ... 내용, 이점 들...
180최성우5/7/200511143[Q] POST 형식의 데이터 훅킹?
182정성태5/9/200511754    답변글 [답변]: [Q] POST 형식의 데이터 훅킹?
190최성우5/10/200510783        답변글 [답변]: [답변]: [Q] POST 형식의 데이터 훅킹?
177최정희5/4/200511299네트워크 케이블의 연결상태
178정성태5/4/200511390    답변글 [답변]: 네트워크 케이블의 연결상태 [1]
188최정희5/10/200510874        답변글 [답변]: [답변]: 네트워크 케이블의 연결상태
189정성태5/10/200511032            답변글 [답변]: [답변]: [답변]: 네트워크 케이블의 연결상태 [2]
... 76  77  78  79  80  81  82  83  84  85  86  87  88  89  [90]  ...