minjeong-oh
기록
minjeong-oh
전체 방문자
오늘
어제
  • 분류 전체보기 (207)
    • ML & Neural Net (3)
    • ◼️GNN (1)
    • ◼️시계열 (1)
    • ◼️추천시스템 (0)
    • ◼️수학 (3)
    • Data Engineer (2)
    • ◼️Spark (1)
    • ◼️Kafka (1)
    • ◼️Elestic Search (0)
    • ◼️Redis (0)
    • ◼️ClickHouse (1)
    • Programming Language (4)
    • ◼️셸 스크립트 (0)
    • ◼️SQL (0)
    • ◼️React (0)
    • ◼️Git (1)
    • ◼️Python (1)
    • ◼️C++ (33)
    • ◼️Fortran 99 (2)
    • ◼️OpenGL (7)
    • ◼️MFC (35)
    • ◼️Flutter (46)
    • ◼️Kotlin (1)
    • ◼️Android (1)
    • ◼️Java (1)
    • ◼️C (4)
    • Development (0)
    • ◼️디자인패턴 (0)
    • ◼️네트워크 (2)
    • ◼️인증 (1)
    • Computer Science (4)
    • 알고리즘 문제풀이 (12)
    • SQL 고득점 Kit 문제풀이 (8)
    • 취업준비 (0)
    • Notion 정리 글 (1)
    • Article Scrap (12)
      • Careerly - Q&A (7)
      • Careerly - Post (2)
    • 기타 등등 (16)

블로그 메뉴

  • 글쓰기
  • 홈
  • 태그
  • 방명록
  • 편집

공지사항

인기 글

태그

  • 19년식그램램장착
  • 인공지능개발자
  • 그램풀스팩업그레이드
  • NextJSSwagger
  • GSLB
  • 19년식그램SSD장착
  • AI배워야하나
  • 티스토리폰트배경색없애기
  • OpenGL회전
  • 리눅스파티션
  • 그램업그레이드
  • 이것이C++이다책참고
  • SpringBootSwagger
  • mfc
  • 구조체매개변수
  • 이차원구조체배열포인터
  • API문서정리
  • 구조체배열포인터
  • hello테마
  • kafka구축

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
minjeong-oh

기록

◼️Java

(JAVA) UTF-8로 인코딩된 txt file의 첫 어절 BOM

2019. 9. 14. 16:58

[Issue]

 

UTF-8로 인코딩된 파일을 불러와서 텍스트를 read할 때 첫 char로 형태가 없는 character가 read된다.

첫 어절을 read할 때 원하는 값이 read되지 않는 문제가 있었다.

 

(해결과정)

.txt의 내용이 <d a k l> 일때

 

(1) String d1 ="d"

(2) String d2 = .txt내용의 첫어절

 

- d1과 d2를 print해봤을 때는 같은 값 d가 출력된다.

- 그러나 d1.equals(d2)는 false값이 나온다.

- d1의 length는 1이고, d2의 length는 2이다.

- d2.charAt(0)의 int값을 확인한 결과 65279인것으로 확인

 

 

[해결]

.txt의 첫 char를 int형으로 출력해본 결과 65279이었다.

이는 UTF-8로 인코딩 된 것임을 알리기 위해 파일의 제일 앞에 붙여주는 BOM이라고 한다.

그래서 나는 이 char를 먼저 읽어주고 작업을 했다. 

FileReader fileReader = new FileReader("test.txt");
fileReader.read();    //BOM를 먼저 읽어준 후
BufferedReader bufferedReader = new BufferedReader(fileReader);
String line = null;

while((line=bufferedReader.readLine())!=null)  //한 라인씩 읽어들인다.
	System.out.println("line : " +line);

 

윈도우 기본프로그램인 메모장에서 UTF-8형식으로 저장을 하는데 이떄 UTF-8이라는것을 나타내기 위하여 BOM(Byte Order Mark)를 파일의 가장 앞부분에 추가하는 것이다. UTF-8의 BOM은 EF BB BF 값으로 표현이 된다. (UTF-16등과같은 경우에는 다른 BOM을 사용한다.) 

<출처 :https://frontjang.info/>

    티스토리툴바