Java는 utf16으로 데이터를 저장한다는 이야기는 많이 들어보았을 듯 싶습니다. 이모지는 2byte로 커버가 되지 않을 텐데 어떻게 저장할까요? 2개의 쌍을 가진 서러게이트로 나누어서 저장합니다. Java 시간에도 잠깐 언급을 했었는데, 그리고 sql을 할 때도 언급을 한 거 같은데, 또 언급하는 이유는 그만큼 중요하기 때문입니다. 몇 메소드에 대해서 더 알아가실 겸. 겸사 겸사. 예를 들어, 강아지 이모티콘은 16진수로, 0x1F415입니다. 이는 2byte의 한계인 0xFFFF보다는 큰 수입니다. Character의 toChars는 codepoint 값을 받아서, 이것을 char형 배열로 리턴해 주는 함수입니다. 이는 Unicode의 코드값을 의미합니다. 예를 들어, '가'는 0xAC00이니까, ..
utf16 검색 결과
안녕하세요. 백준 chogahui05입니다. 'A'를 ascii로 표현한다면 1byte로 표현이 됩니다. 그런데, '가'와 같은 것들은 ascii로 표현하지 못합니다. java에서 문자 인코딩 시간에 이야기를 조금 했었습니다. utf-8 인코딩 형식에서는 3byte로 표현이 된다고. utf-16은? 2byte였어요. 실제로, mysql에서 length는 문자열의 byte 크기를 리턴해 주는데요. 예제를 보면서 이해해 보도록 하겠습니다. 먼저 table 2개를 생성하겠습니다. 각각 utf8_table과 utf16_table입니다. utf8mb4는 아래 글에서 충분히 설명을 드렸습니다. [관련글] utf8mb4는 대체 무엇일까요? 이모티콘을 넣을 수 있었던 것이 utf8mb4, 그렇지 않았던 것이 utf8이..
Java의 char형은 어떻게 표현이 될까요? Character 클래스에 BYTES 라는 필드가 있는데요. 이 값은 char형 변수가 바이트를 얼마나 쓰는지 나타냅니다. 이 값을 출력해 봅시다. 2가 나와요. 기본적으로 16bit 유니코드 인코딩을 쓰고 있다는 건데요. 이제 이 친구가 어떤 식으로 값을 저장하는지 알아보도록 하겠습니다. '가'라는 문자를 집어 넣어보겠습니다. '가'는 유니코드로 U+AC00에 맵핑이 됩니다. 그러면, ch를 int형으로 변환하여 출력하면, 유니코드가 어떠한 형식으로 디코딩 된 결과를 출력할 겁니다. Integer 클래스 안에 있는 toHexString은 16진수의 문자열로 출력해주는 함수입니다. 봤더니 16진수로 ac00으로 출력이 되었어요. 이 값은 0000에서 ffff..
최근댓글