# utf8mb4

MySql 한글 및 이모지 지원하기
이슈 토이 프로젝트 진행하며, iOS에서 '한글'과 '이모지' 를 입력해도 500 에러가 발생하면서 새로운 Todo 가 만들어지지 않음. 원인을 파악해보니 mysql의 유니코드와 관련이 있었음. 진행 해당 유니코드를 바꾸기 위해 아래의 작업을 진행함. 일단 Terminal을 열고 진행중이던 mysql을 잠시 멈춘다. Status를 확인해보면 characterset이 utf8mb3로 들어가있는걸 확인할 수 있다. 아래의 절차를 통해 utf8mb4로 바꿔주도록 하겠다. Vim을 열어준다. 아래의 script를 작성하고 esc 버튼을 누른다음 :wq 저장하고 종료해준다. 그리고 위의 mysql status 를 확인하게 되면 utf8mb4로 변경된걸 확인할 수 있다. 그리고 여전히 입력되지 않는 이슈가 있어 더 찾아보았다.. DB를 열어서 title과 description의 유니코드-Collation을 확인해보니 **utf8mb4

DataBase Collation : utf8mb4_unicode_ci 가 의미하는 것
DB연결시 텍스트 데이터를 취급하는 과정에서 Database Encoding과 Database Collation이 있다. 제대로 사용하기 전에 어느 역할을 하는지 알아야하기 때문에, 이 글을 작성하게 되었다. 💻 사용한 DB Tool - Sequel Ace ❓MySQL/MariaDb database management Tool (for MacOS) 설치는 App Store에서 진행 Encoding(인코딩)에 대하여 UTF-8 실생활에서 사용되는 텍스트기반의 데이터를 출력하기 위해서 등장하게 된 케이스 UTF-8 문자 집합은 1~4바이트 까지 저장이 가능하다. ❓Collation(정렬) 
Install MySQL using Docker (feat. 한글)
-e LANG=ko_KR.UTF-8 https://stackoverflow.com/a/66792543 참고) https://poiemaweb.com/docker-mysql https://learn.microsoft.com/ko-kr/visualstudio/docker/tutorials/tutorial-multi-container-app-mysql

Database | utf8 → utf8mb4 인코딩 변경하기
프로젝트를 배포하기 전 여러가지 테스트를 진행하던 중 텍스트를 입력하는 부분, 예컨대 '자기소개', '팀소개', '채팅' 등에서 이모티콘/이모지 입력이 안되는 오류를 발견하였다. 문제의 원인은 DB의 특정 컬럼 Character Set 이 utf8 로 설정되어 있어서이다. utf8 인코딩이 3 Bytes로 처리되는 반면, 이모지는 65,536 범위를 넘어가서 4 Bytes로 처리되기 때문에 DB에 입력이 안되는 것이다. 문제 해결을 위해 프로젝트에 사용하는 MySql의 데이터베이스, 테이블, 컬럼 에 대한 인코딩 수정을 진행하였다. 오류를 수정하면서 보니, 데이터베이스의 인코딩 설정만 변경한다고 해서 오류가 잡히는 것이 아니었다. DB 자체의 인코딩과 더불어 이모지가 사용될만한 테이블/컬럼에 대한 수정이 필요했다. 또한, 특정 테이블에서는 다르게 맞물려 있는 문제때

mariaDB Docker Container 환경설정
이전 블로그에서 적었던 적이 있는 내용인데요. 이는 On-Premise 환경에서의 환경설정을 다루었는데, Docker Container로 넘어오면서는 조금 달라져서 Docker 환경에서의 설정 방법을 간단하게 기재해보고자 합니다. 혹시, Ubuntu 환경에서 Docker 설치 방법을 찾고 계시다면, 여기 글을 참고해주세요! 설정의 이유 우리나라에서 DB를 구성할 때에는 고려를 해야할 부분이 크게 2가지입니다. 기본 charset을 utf8 또는 utf8mb4 등으로 설정하여 한글이 저장될 수 있도록 해야합니다. Timezone을 GMT+9로 설정하여 now() 등의 쿼리를 사용하였을 때

[MySQL] schema 생성시 collation 설정
MySQL 에서 collation 확인하기 모든 collation 확인 SHOW COLLATION UTF와 관련된 collation 확인 UTF - COLLATIONS utf8mb4 기본적으로 UTF는 가변 길이 encoding 방식이다. MYSQL에서는 UTF8(alias of utf8mb3)의 alias로 설정이 되어 있어서 최대 3 bytes까지만 사용할 수 있다. 모바일이 대중화됨에 다라,대중화 됨에 따라 emoji와 같이 기존에 사용되지 않던 문자들까지 사용하기 위해

mysql database 이모티콘 설정(utf8mb4)
프로젝트를 진행하다보니 데이터베이스에 이모티콘(✅햇살 가득한 집 👍 맞춤형 중개 💖💖코로나 보다 강한 컨디션과 방크기!! 양창!!💖💖)을 넣어야했습니다. 기존 UTF-8 charset 만으로는 DB에 저장할 수 없다고 해서 DB를 만들 때 utf8mb4 설정을 해줬는데도, DB에서는 django.db.utils.operationalerror incorrect string value utf8mb4 not work 이런 식의 에러를 계속 뱉어내더군요. 결론은 장고와 mysql을 연결할 때 charset 을 추가 설정해주면 됩니다. DB를 처음 세팅하는 것부터 한 번 해봅시다. mysql에서 아래와 같이 데이터베이스를 만드는 명령어를 입력합니다. danaebang의 자리에 만들고자 하는 데이터베이스 이름을 넣으시면 됩니다. 이름 뒤에 나오는 character set 설정으로 이 데이터베이스가 utf8mb4를 받아들일 수 있도록 합니다. <

4주 프로젝트-dev log #15
Introduction 이제 거의 마무리가 다가오고 있다. 서버측에서는 배포를 담당하지만 클라이언트 코드도 보면서 어느정도 이해를 해 도움이 필요하거나 속도가 뒤쳐지는 듯 하면 바로 도와줄 수 있게 같이 지켜보고 있다. 서버 기능을 어느정도 다 구현했으니 이제 그 외적인, 배포와 또 프록시 설정? 이런 부분들을 설정해줘야 해서 그 부분들을 진행하고 있다. 현재 고민거리? 이제 서버측의 코드를 어느정도 정리해서 배포를 해야 하는데 여러 가지 문제가 있어 팀과 상의를 했다. 먼저, Http로 서버를 구축할지, 아니면 보안을 위해 SSL 키를 사용해 https 로 구축을 할지 의논을 했는데 일단 우리 어플에 사용하는 정보 중 중요한 정보가 없고 이메일 외의 개인정보? 라고 하기도 애매한 정보가 없기 때문에 사실 돈을 주고 도메인을 사서 SSL 키를 발급받을 만한 의미가 없다고 생각했고 어플 자체가 그렇게 크게 수익성을 생각하고 개발한 어플이 아니기 때문에 그냥 http로도 충분

emoji 문자 표현하는 방법[MySQL]
문제 기존 MySQL에 한글 및 다른 언어가 깨지는 것을 처리하려면 character set을 utf8로 설정해야 했었다. 그렇다면 emoji같은 글자들은 어떨까? character set이 utf8인 게시판에 emoji로 된 글을 남겨 보았다. 글자가 깨져 보일 것이다. 문제 발생 이유 UTF-8 은 1~4 Byte까지 저장이 가능하게 설계되어있다.(가변 바이트) 거기서 MySQL은 utf8이 3Byte까지 표현할 수 있다. 하지만 emoji는 4Byte로 되어 있는 문자이다. 3Byte까지 표현할 수 있는 MySQL의 utf8에 4Byte 문자를 표현하려고 하니 손실이 일어나 깨져 보이는 것이다. 해결 이런 문제를 해결하기 위해 MySQL에서 새로운 character s