Microsoft MVP성태의 닷넷 이야기
c# 압축파일 읽어 올 때 BinaryRead 한글 처리 문제 [링크 복사], [링크+제목 복사],
조회: 10407
글쓴 사람
김영식 (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을 해야 합니다.
정성태

1  2  3  4  5  6  7  8  9  10  11  12  [13]  14  15  ...
NoWriterDateCnt.TitleFile(s)
5650김기헌4/19/202210572WPF 리소스 관련 질문드립니다 [3]
5649주니어4/15/202210179ffmpeg 질문 있습니다! [2]
5648주니어개...4/13/202210377컴파일된 코드를 원시코드로 바꾸려면 어떻게해야하나요? [1]파일 다운로드1
5647장성욱4/7/202210340코어지정 CPU사용률 관련 질문 [1]
5646서형주4/6/202210561List에 여러개의 class 객체를 만들어 넣을때, 객체의 method들도 같이 생성되어 메모리를 차지하나요? [1]
5645김인태4/6/20229960윈도우즈 서버의 AD 계정 생성 조건이 있을까요? [1]
5644ㅇㅇ4/6/202210927c# 프로그램을 이용하여 리눅스상에 파일 생성이 가능한가요? [1]
5643유필재4/5/202211021TCP클라이언트 연결 및 통신관련하여 문의드려요 [1]
5642차가워4/4/202211433UdpClient 패킷 수신 문의 [4]
5641장성욱4/4/202211347코어 할당 및 cpu 부하테스트 질문 [7]
5640icoo...4/4/202211545웹가든에서 메모리 동적 업데이트 방법 [1]
5639차가워4/4/202211503c++ 서버 c# 클라이언트 호환 문의 [1]
5638초급4/3/202211980c# sql server 연동 [1]
5637따봉이4/1/202212709Winform Form Load 후 자동 캡쳐관련 [1]파일 다운로드1
5636김철순3/31/202212136WPF에서 Richtext의 View 문의 [5]
5635guest3/30/202211495안정적인 pinning이 가능하네요. [3]파일 다운로드1
5633꿀주세요3/30/202211349선생님 마우스 클릭이벤트 질문이 있습니다. [4]
5632김현수3/30/202211818Remote Desktop으로 접속시 WPF UI 가 다시 그려지는 이벤트를 막을 수 없을까요? [3]
5631김기헌3/24/202211390WPF 컨트롤의 그래픽 처리관련 질문드립니다 [2]파일 다운로드1
5630장성욱3/24/202211169로깅관련 질문입니다. [2]
5629감사합니...3/23/202211845함수에서 예외가 발생하면 try ~ catch처리기를 찾을 때 까지 상위 함수로 계속 올라가나요? [2]
5628홍길동3/23/202212616질문드립니다. [2]파일 다운로드1
5626연준혁3/21/202211629안녕하세요. [3]
5625jaew...3/18/202212445c# 8.0 도서를 구입한 사람입니다. [1]
5624초보자3/17/202211304람다 캡처 관련 문의 [2]
5623한예지 donator3/15/202211071인터프리터 원리가 궁금합니다. [4]
1  2  3  4  5  6  7  8  9  10  11  12  [13]  14  15  ...