당근개발자
당근당근
당근개발자
전체 방문자
오늘
어제
  • 분류 전체보기 (157)
    • codepresoo (13)
    • JAVA (1)
    • JS (12)
    • 코딩 테스트 (7)
    • Spring (21)
    • 자료구조 (4)
    • HTTP (7)
    • JSP (36)
    • Etc (21)
    • RESTful (11)
    • React (1)
    • k8s (0)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • queue#자료구조
  • thymleaf error#template might not exist
  • S
  • @JsonFilter#당근개발자
  • 코드프레소. #codepresso #대외활동 # IT교육 #코딩강의 #코딩 이러닝 # 무료 IT교육 #무료 코딩교육
  • #코드프레소. #codepresso #대외활동 # IT교육 #코딩강의 #코딩 이러닝 # 무료 IT교육 #무료 코딩교육
  • 이
  • 패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #수강하고있는강의명
  • stack#자료구조
  • dobule_linked_list#java
  • 패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기
  • 한 번에 끝내는 코딩테스트 369 Java편 초격차 패키지 Online
  • 한 번에 끝내는 코딩테스트 369 Java편 초격차 패키지 Online.
  • HATEAOD
  • Primitive#Wrapper
  • thymleaf#layout#fragment#thymleaf layout 적용안됌

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
당근개발자

당근당근

Etc

String.getBytes() 스트링을 인코딩,디코딩하는 이유?

2021. 7. 21. 10:47

암호를 hash 처리하는 코드(MessageDigest)를 보던중  String을 byte화,  str.getBytes() 처리를 하는 코드가 있었다.

왜 굳이 바이트처리를 하는지 몰라서 찾아봤다.

 

-만약 DB가 한글을 지원하지 않을 경우, 한글로된 문자를 숫자로 encoding해서 저장하면되고,

사용자에게 보여줄 때는 다시 decoding해서 보여주면 된다.

 

- byte[] getBytes()

- byte[] getBytes(Charset charset)

- byte[] getBytes(String charsetName)

 

-> 문자열을 인코딩된 byte 형태로 넘겨준다. 매개 변수 없이 그냥 getBytes()메서드를 사용하면 플랫폼에 따른 default charset을 사용한다.

->만약 특정 charset을 지정할 경우 인자를 받는 getBytes()를 사용하면 된다. iso-8859-1, euc-=kr,utf-8 등의 charset 등이 존재한다. encoding과 decoding 할 때 이 charset를 맞춰서 해야한다. 그렇지 않을 경우 문자가 깨지는 현상이 발생한다.

 

* 인코딩 : 문자,기호,숫자데이터를 부화하

 

1) charset의 의미

charset = Coded Character set

컴퓨터에서 문자를 표현하기 위해, 각 문자를 정수값에 대응시켜 놓은 체계 를 의미한다.

예를 들어 euc-kr charset이라면 영숫자와 한글 그리고 일부 특수 문자와 한자들을 정수값에 대응해 놓은것이다.

euc-kr 환경에서 한글을 입력하면, 컴퓨터는 euc-kr charset에서 각 문자별로 지정한 정수값을 쓰게 된다.

 

2) charset이 달라진다면

각 charset 별로 표현하고자 하는 문자와 대응하는 정수값이 달라 질 수있다.

예를 들어 euc-kr은 태국문자를 위한 정수값을 정의하지 않았으므로, 태국 문자는 표현한거나 입력 할 수 없다.

 

그리고 euc-kr charset에 맞춰 한글로 어떤 내요을 작성하고,

이것을 iso-8859-1 charset 환경에서 열어본다면, 한글 대신 이상한 특수문자를 볼수있을 것이다.

이러한 문제로 ,  문자 데이터를 교환 할때 서로 간에 charset을 일치시켜야한다.

서블릿 코딩시에 content type의 일부로 charset을 명시하는것은 웹 브라우저에게 사용하는 charset을 알려주어 오해하지 않게 하기 위해서이다.

 

3) 영문 OS에서 한글 표현

charset에 맞추어 문자데이터를 처리하는것은 OS나 DBMS, 미들웨어 등 플랫폼이므로 , 플랫폼에서 제공해주지 않는 charset을 사용할수 없다.

최근의 플랫폼 SW들은 다양한 charset 지원을 포함하고 있다. 만약 어떤, OS가  euc-kr모드로 작동하고 있다면, 설령 영문 OS라고 하더라도, 한글 처리에 문제가 없다고 한다.

 

 

 

'Etc' 카테고리의 다른 글

이클립스 프로젝트 파일 자동 새로고침  (0) 2021.07.26
Blob이란?(form : enctype)  (0) 2021.07.26
jdbc) Execute, ExecuteQuery, ExecuteUpdate 차이점  (0) 2021.07.20
gitHub 기본 지식  (0) 2021.07.16
Lombok  (0) 2021.07.16
    'Etc' 카테고리의 다른 글
    • 이클립스 프로젝트 파일 자동 새로고침
    • Blob이란?(form : enctype)
    • jdbc) Execute, ExecuteQuery, ExecuteUpdate 차이점
    • gitHub 기본 지식
    당근개발자
    당근개발자

    티스토리툴바