디스코드(Discord)의 파일업로드는 왜 글자가 깨질까?

왱구·2024년 3월 27일

스터디

목록 보기
14/21

디스코드?


디스코드는 2015년 5월에 출시된 음성, 채팅, 영상 공유, 화상 통화 등을 지원하는 인스턴트 메신저이다. 한국에서는 주로 게이머들이 많이 사용하는 편이였으나 이젠 단순한 게이머를 위한 공간을 넘어 진화했으며 이제는 커뮤니티 플랫폼과 협업 도구로도 확장되고 있다.
나도 개인적으로 디스코드를 게임용으로 활용하였으며, 요즘에는 업무 또는 원격 교육에서 실시간 질의응답 등으로 인한 생산성을 높이기 위한 팀 도구로도 사용하고 있다.

글자가 깨진다?


그런데 디스코드를 사용하다보니 의문점이 생겼는데 그건바로

파일업로드 시 한글파일명이 깨지는 현상.
영어는 또 잘된다.

테스트를 더 해보기로 했다.

파일명업로드 후
테스트.txtad07a0a78534dfef.txt
테스트123.txt123.txt
테스트text.txttext.txt
123.txt123.txt
text.txttext.txt

파일명이 한글로만 되어있으면 글자가깨지고 한글을 제외하고 숫자나 영문이 섞여있으면 그 섞인 숫자나 영문으로만 업로드가 된다.
또한 같은 한글파일을 두번 이상 업로드했을때 결과가 다른걸 보면 무작위로 파일명이 바뀌는 모양이다.
이는 모든 os에서 유니코드를 지원하지 않기 때문에 디스코드에서 무작위 영문숫자로 바꾸는것이다. 당장 영문 윈도우로 한글을 작성해보면 다 깨져서 나오지 않는가. 지원하지 않는 기기들에 문제가 없도록 무작위로 변환하는것이기 때문에 디스코드의 업로드 과정에 UTF-8과 같은 인코딩 옵션이 없는것이다.
URL인코딩하는 방법도 있을텐데 무작위로 바꿔버리는것이 아쉬움이 남는다.

그런데 유니코드와 UTP-8이 뭘까?

유니코드?


  • 옛날 컴퓨터가 처음 나왔을 때 '영어'와 몇가지 '특수문자'만 사용했고 이를 저장하기 위해서는 1byte면 충분했음
  • 시간이 흘러 다른 국가 사람들이 컴퓨터를 이용하다보니 자국어도 컴퓨터로 표시하고 싶어져 1byte 안에 임의대로 자기나라 글자를 할당해서 썼음
  • 그런데 네트워크가 발전하고 다른나라 홈페이지를 들어가게 되었는데 글자가 깨짐
  • 그리하여 국제적으로 전세계 언어를 모두 표시할 수 있는 표준코드를 만들기로 했는데 그게 바로 유니코드(Unicode)
  • 한글 ‘가’는 유니코드로 ‘U+AC00’
  • 전체 유니코드 영역 코드표(글자와 코드가 1:1 매핑되어있는 표): https://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C_%EC%98%81%EC%97%AD

UTP-8?


  • 유니코드를 통해 정의된 코드표의 코드가 컴퓨터가 이해할 수 있는 형태로 바꾸어 컴퓨터에 저장되는 방법이 인코딩(Encoding)
  • UTF-8은 유니코드를 인코딩(encoding)하는 방식이며 전세계에서 사용하는 약속
  • UTF-8은 가변 인코딩방식으며 글자마다 byte 길이가 다름

출처 : https://jeongdowon.medium.com/unicode%EC%99%80-utf-8-%EA%B0%84%EB%8B%A8%ED%9E%88-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-b6aa3f7edf96

profile
늦깎이 애아빠 개발지망생

0개의 댓글