작업실

그누보드5에 이모지 이모티콘 사용하기 (MariaDB, MySQL, utf8mb4)

우성군 0 6519 0

1. Emoji 이모지 문자열 이모티콘이란?

 

에모지(絵文字, Emoji; 한국 한자: 회문자)는 일본의 휴대 전화 단문 메시지(SMS)에서 사용하는 이모티콘 또는 그림 문자를 가리킨다. 에모지는 일본어에서 "그림"을 뜻하는 글자 "絵"의 음과 "문자"를 뜻하는 글자 "文字"의 음을 그대로 합성해서 만든 단어이다. 이모티콘과 유사하지만 더 많은 그림 문자를 제공하고 있다.

 

출처 : https://ko.wikipedia.org/wiki/%EC%97%90%EB%AA%A8%EC%A7%80

간단하게 요새 스마트폰의 키보드에 내장되어 있는 이모티콘이라고 보시면 됩니다. 

 

예를 들어 안드로이드 구글한글키보드에서 나오는

 

 

▲  바로 위와 같은 것들이죠.

 

이것을 쓰는 이유는 일반적인 이모티콘보다 트래픽이 훨씬 적게 소모되기 때문입니다.

 

그리고 각 브라우저마다 표현하는 방식은 다르지만, 거의 대부분의 브라우저에서 지원을 하고 있기 때문에 충분히 쓸만하기 때문입니다.

 

 

하지만 일반적인 서버DB의 문자셋은 utf8이기 때문에 utf8mb4로 바꿔줘야 제대로 표현이 됩니다.

 

 

2. DB서비스에서 설정 수정하기

 

1) MariaDB의 경우 /etc/mysql/conf.d/mariadb.cnf 에서

 

# MariaDB-specific config file.

# Read by /etc/mysql/my.cnf

 

[client]

default-character-set = utf8mb4

 

[mysqld]

# * Character sets

character-set-client-handshake = FALSE

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

character_set_server = utf8mb4

collation_server = utf8mb4_unicode_ci

위와 같이 수정해줍니다. 

 

 

2) MySQL의 경우 5.5.3버전부터 utf8mb4가 지원이 됩니다.

 

https://dev.mysql.com/doc/relnotes/mysql/5.5/en/news-5-5-3.html

 

/etc/my.cnf 에서

 

[client]

default-character-set = utf8mb4

 

[mysql]

default-character-set = utf8mb4

 

[mysqld]

character-set-client-handshake = FALSE

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

character_set_server = utf8mb4

collation_server = utf8mb4_unicode_ci

위와 같이 수정해줍니다. 

 

 

service mysql restart

위 명령어로 MySQL, MariaDB를 재시작해줍니다. 

 

 

3. DB에서 utf8mb4가 적용되었는지 확인하기

 

mysql -u root -p

위 명령어로 MySQL, MariaDB로 들어간 후 

 

SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

위 명령어를 내리면 

 

 

+--------------------------+--------------------+

| Variable_name            | Value              |

+--------------------------+--------------------+

| character_set_client     | utf8mb4            |

| character_set_connection | utf8mb4            |

| character_set_database   | utf8mb4            |

| character_set_filesystem | binary             |

| character_set_results    | utf8mb4            |

| character_set_server     | utf8mb4            |

| character_set_system     | utf8               |

| collation_connection     | utf8mb4_unicode_ci |

| collation_database       | utf8mb4_unicode_ci |

| collation_server         | utf8mb4_unicode_ci |

+--------------------------+--------------------+

위와 같은 결과물이 나오면 성공입니다. 

 

참고로 character_set_system utf8은 변경되지 않는다고 합니다.

 

(출처 : https://mathiasbynens.be/notes/mysql-utf8mb4 )

 

 

 

4. 그누보드 수정하기

 

그누보드 루트에 common.php의 대략 139번째 줄에서

 

 

sql_set_charset('utf8', $connect_db);

위 내용을 

 

 

 

sql_set_charset('utf8mb4', $connect_db);

위와 같이 수정해줍니다. 

 

 

5. 그누보드 DB 글내용, 댓글입력 수정하기

 

 

아래 작업 DB를 수정하는 것이므로 반드시 DB를 백업한 후 작업하시길 바랍니다.

 

 

1) Putty에서 작업하기

 

 

mysql -u root -p

위 명령어로 MySQL이나 MariaDB로 접속합니다. 

 

 

수정할 DB로 접속해야 합니다.

 

 

use DB이름;

 

 

예를 들어 DB 이름이 g5라면

 

use g5;

위와 같이 입력하면 g5 DB만 수정할 수 있게 됩니다. 

 

 

 

이제 수정을 원하는 게시판의 테이블 이름을 알아야 합니다.

 

보통 그누보드 주소에 보면 있죠?

 

이제 아래와 같은 명령어로 수정하게 됩니다.

 

 

ALTER TABLE `g5_write_게시판테이블이름` CHANGE `wr_subject` `wr_subject` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL; 

위 명령어는 글 제목에 이모지를 쓸 수 있게 해줍니다. 

 

 

 

ALTER TABLE `g5_write_게시판테이블이름` CHANGE `wr_content` `wr_content` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL;

위 명령어는 글 내용과 댓글에 이모지를 쓸 수 있게 해줍니다. 

 

 

 

ALTER TABLE `g5_write_gallery` CHANGE `wr_subject` `wr_subject` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL; 

 

ALTER TABLE `g5_write_gallery` CHANGE `wr_content` `wr_content` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL;

예를 들면 위와 같이 할 수 있겠죠? 

 

각 게시판 테이블마다 위 작업을 반복적으로 적용하면 됩니다.

 

 

 

2) phpmyadmin에서 작업하기

 

데이터베이스 -> 데이터베이스 이름 클릭 -> 구조 탭에서 게시판의 테이블을 클릭합니다.

 

참고로 이 작업은 적용을 원하는 게시판 마다 반복적으로 작업해야 합니다.

 

예를 들어 게시판이 100개가 있다면 100번 해줘야 합니다. (일괄로 바꾸는 방법을 잘 몰라서...)

 

이제 free라는 게시판 테이블이 있다면 g5_write_free 테이블을 클릭합니다.

 

그러면 DB 의 보기 탭에 들어가 있을 것입니다.

 

이제 구조 탭을 누릅니다.

 

10번 wr_subject에서 오른쪽에 실행에 보면 변경이 있습니다.

 

 

 

▲  참조하시면 좋습니다. 

 

 

데이터정렬방식을 utf8mb4_unicode_ci로 바꾸고 저장을 눌러줍니다.

 

11번 wr_content에서 오른쪽에 실행에 보면 변경이 있습니다.

 

데이터정렬방식을 utf8mb4_unicode_ci로 바꾸고 저장을 눌러줍니다.

 

 

10번은 게시판 제목, 11번은 게시판의 글내용과 댓글, 대댓글에 에모지 사용 가능하게 해줍니다.

 

 

게시판 수가 많을수록 작업할게 있겠지만 크게 어렵지 않기 때문에 쉽게 하실 수 있을 듯 합니다.

 

그리고 추가로 필요한 곳이 있다면 해당 부분에 작업해주시면 입출력이 잘 될 것입니다.

 

 

6. 구글한글키보드에서 Emoji 문자열 이모티콘 적용하기

 

이제 실제로 스마트폰에서 어떻게 입력할 수 있는지 봅시다.

 

 

 

▲  위와 같이 그림이 있는 곳을 누릅니다.

 

 

 

▲  위와 같이 그림이 있는 곳을 누릅니다.

 

 

 

▲  이제 처음에 봤던 바로 그 이모티콘들을 볼 수 있습니다.

 

 

 

 

▲  위와 같이 제목과 내용에 에모지를 넣어봅시다.

 

 

 

▲  위와 같이 게시물에 잘 작성이 되고, 잘 출력이 되는 것을 볼 수 있습니다.

 

 

7. 참조 링크

 

https://blog.lael.be/post/917

https://mathiasbynens.be/notes/mysql-utf8mb4

http://stackoverflow.com/questions/7814293/how-to-insert-utf-8-mb4-characteremoji-in-ios5-in-mysql

http://sir.kr/so_server/719

http://sir.kr/cm_free/1371882

https://ko.wikipedia.org/wiki/%EC%97%90%EB%AA%A8%EC%A7%80

, , , , , , , ,

0 Comments