웹사이트를 개발하다보면 문자열이 깨지는 경우가 종종 있다. 이는 인코딩 문제이다.
요새는 UTF-8 인코딩을 거의 표준처럼 사용하기에, 아래 모든 설정을 UTF-8로 통일 해주어야 문자열이 깨지지 않는다.
HTTP Header 설정
헤더 정보를 보낼 때, 아래와 같이 메타 태그로 charset=UTF-8을 넣어 보내야 함
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
blog_charset UTF-8 yes
PHP 인코딩 문제
php.ini 에 다음 설정 추가
default_charset = "utf-8"
mbstring.internal_encoding=UTF-8
DB 인코딩 문제
1. MariaDB 기본 Charset 확인
show variables like 'c%';
2. 데이터베이스 인코딩 확인
SELECT default_character_set_name, DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE schema_name = "wordpress";
3. 테이블 인코딩 확인
SHOW FULL COLUMNS FROM wp_posts;
서버 인코딩 문제
httpd.conf 설정 확인
전체 설정 추가
AddDefaultCharset UTF-8
디렉토리별 인코딩 설정이 필요하다면, 아래와 같이 설정 추가
<Directory "/var/www/html">
AddDefaultcharset UTF-8
</Directory>
운영체제 시스템 로케일
특정 인코딩이나 Charset이 지정되지 않은 경우, 시스템 로케일을 사용하는 경우가 있으므로 시스템 로케일을 UTF-8로 설정해 준다.
현재 로케일 확인
[root@0000 modules]# localectl
System Locale: LANG=en_US.UTF-8
VC Keymap: us
X11 Layout: us
가용한 모든 로케일 보기
locale -a
로케일 변경
'/etc/locale.conf' 파일 열어서 아래와 같이 변경 후, 아파치 재시작
LANG=ko_KR.UTF-8
sudo systemctl restart httpd
※ 참고
Media Type
A media type, also known as a MIME type or content type, is a string identifier that specifies the format of a file or the type of data being transmitted in a HTTP request or response. Media types are used to indicate the format of a file, such as text, image, audio, or video, so that the recipient's software can correctly interpret and display the data.
Multipart
The multipart media type is used to send multiple parts of a message as separate entities in a single HTTP request or response. Each part is treated as a separate entity with its own media type and content encoding. The "multipart" media type is typically used for file uploads, where the user wants to send multiple files in a single request.
Text
The "text" media type is used to indicate that the content of a HTTP request or response is plain text, as opposed to binary data. The "text" media type is typically used for text documents, such as HTML, CSS, and JavaScript files, as well as for plain text data, such as the contents of a form field in a web page.
In HTTP, media types are indicated in the "Content-Type" header of a request or response, and can be specified using a standard media type string, such as "text/plain" or "multipart/form-data".
[관련글] 인코딩의 개념과 종류 : https://life-coding.tistory.com/95
'Web' 카테고리의 다른 글
보안서버 SSL 인증서 설치하기(HTTP에서 HTTPS로 전환하기) (1) | 2021.12.23 |
---|---|
[Google Analytics] 구글 애널리틱스 트래픽 소스(Traffic source) 정의 (0) | 2021.12.07 |