PHP 게시판 필드 타입을 아무리 크게 변경해도 아이콘(이모지)을 넣었을 때 글이 뚝 잘려버리는 이유는
페이지 정보
작성자 최고관리자 작성일 26-07-26 14:22 조회 2 댓글 0본문
게시판 필드 타입을 아무리 크게 변경해도 아이콘(이모지)을 넣었을 때 글이 뚝 잘려버리는 이유는 그누보드와 데이터베이스(DB)의 문자 저장 방식(Charset) 문제 때문입니다. 즉, 글자 수 한도를 초과한 것이 아니라 데이터를 저장하는 방식의 규격이 맞지 않아 발생한 현상입니다.
원인을 정확히 이해하고, 게시판에서 아이콘과 긴 글을 모두 완벽하게 사용할 수 있는 해결 방법을 안내해 드리겠습니다.
1. 아이콘이 있으면 왜 글이 잘릴까? (원인)
스마트폰이나 PC에서 입력하는 아이콘은 단순한 그림이 아니라 4바이트(4bytes) 크기의 데이터로 구성된 문자(이를 이모지/Emoji라고 부릅니다)입니다.
- 기존 그누보드 설정 (
utf8): 한 글자를 최대 3바이트까지만 저장할 수 있습니다. - 발생하는 문제: 글을 작성하다가 4바이트짜리 이모지 문자가 등장하면, 데이터베이스는 이를 해석하지 못해 치명적인 오류로 인식합니다. 데이터의 안전을 위해 이모지 문자가 입력된 그 자리부터 뒷부분의 글 전체를 통째로 잘라내고 앞부분만 저장하게 됩니다.
2. DB 필드 타입 변경만으로 긴 글 쓰기가 가능한가요?
네, 순수한 텍스트(한글, 영어, 숫자 등)만 작성하신다면 지난번에 설정한 DB 필드 타입(
MEDIUMTEXT
등)과 이전 답변에서 수정한 php 소스 코드 변경만으로 제한 없이 엄청나게 긴 글을 쓰실 수 있습니다. 다만 4바이트 이모지 아이콘이 포함되는 순간 데이터 규격(Charset) 제한에 다시 걸리게 됩니다.3. 게시판에 아이콘(이모지)과 긴 글을 모두 사용하려면?
데이터베이스와 그누보드가 4바이트 문자를 인식할 수 있도록 문자셋을
utf8mb4
로 업그레이드해 주어야 합니다. 아래 2가지 작업을 추가로 진행해 주세요. ① 그누보드 설정 파일 수정 (
config.php
)그누보드 프로그램이 DB와 대화할 때 4바이트 형식으로 소통하도록 명령하는 작업입니다.
- FTP로 접속하여 그누보드 최상위 경로에 있는
config.php파일을 엽니다. -
G5_DB_CHARSET을 검색하여 기존utf8설정을 아래와 같이utf8mb4로 수정하고 저장합니다.phpdefine('G5_DB_CHARSET', 'utf8mb4');코드를 사용할 때는 주의가 필요합니다.
② phpMyAdmin에서 필드의 데이터 정렬 방식 변경
문제가 발생한 해당 게시판 테이블의 문자 저장 방식을 변경해 줍니다.
- phpMyAdmin에서 해당 게시판 테이블을 선택합니다.
- 상단의 [구조(Structure)] 탭으로 이동합니다.
-
wr_subject(제목)와wr_content(본문) 필드를 체크한 후 [변경(Change)] 단추를 누릅니다. - 속성 중 데이터 정렬 방식(Collation)을 찾아 기존
utf8_general_ci에서utf8mb4_general_ci또는utf8mb4_unicode_ci로 변경하고 저장합니다.
요약하자면,
필드 타입을 바꾼 것은 글을 담을 '그릇의 크기'를 늘린 것이고, 문자셋(
필드 타입을 바꾼 것은 글을 담을 '그릇의 크기'를 늘린 것이고, 문자셋(
utf8mb4
)을 바꾸는 것은 '그릇에 담을 수 있는 물건의 종류(아이콘)'를 허용해 주는 것입니다. 위 설정을 마치시면 긴 글은 물론, 카카오톡이나 스마트폰에서 쓰는 온갖 화려한 이모지 아이콘을 마음껏 섞어 쓰셔도 글이 절대 잘리지 않고 완벽하게 등록됩니다.댓글목록 0
등록된 댓글이 없습니다.
