본문 바로가기

PHP/PHP

[ PHP ] DB에 저장된 이모티콘 보여주기

 

앞 장에서도 말했듯이, 율토리는 가난한 촌마을이다 ㅠ_ㅠ

지난번 포스팅에서 DB (MysSQL / MariaDB) 에 이모티콘을 저장하는 방법을 포스팅하였다.

 

☞ MySQL · MariaDB 에 이모티콘 저장하러가기

 

그런데, 이 데이터를 DB에서 가지고 올때, PHP 에서도 처리해줄 것이 있다.

그렇지않으면 DB에는 이모티콘이 잘 저장되어있는것을 볼 수 있으나,

웹 페이지에서는 ? 로 표시되게 된다ㅋ

 

방법은 간단하다.

PHP 에서도 DB로 Connection 할때 Character Set을 맞춰서 통신해주어야 한다.

 

방법 1. 보통 regacy code 에서 사용 되는 mysqli (또는 mysql) lib function 사용.

## mysqli library function
mysqli_set_charset($conection,"utf8mb4");
mysqli_query("SET collation_connection = 'utf8mb4_unicode_ci'");

## OR
mysqli_query($conection, "SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';");

 

방법 2. Query 로 실행.

## charset setting query
SET NAMES utf8mb4;

## collation setting query
SET COLLATION_CONNECTION = 'utf8mb4_general_ci';

 

방법 3. CI 사용시 - database 설정 페이지에서 setting.

$db['default'] = array(
	'dsn'	=> '',
	'hostname' => '호스트명',
	'username' => '계정',
	'password' => '패스워드',
	'database' => 'DB명',
	'dbdriver' => 'mysqli',
	'dbprefix' => '',
	'pconnect' => FALSE,
	'db_debug' => (ENVIRONMENT !== 'production'),
	'cache_on' => FALSE,
	'cachedir' => '',
	'char_set' => 'utf8mb4',
	'dbcollat' => 'utf8mb4_unicode_ci',
	'swap_pre' => '',
	'encrypt' => FALSE,
	'compress' => FALSE,
	'stricton' => FALSE,
	'failover' => array(),
	'save_queries' => TRUE
);

 

 

* collation 을 설정하지 않아도 character_set 만 utfmb4로 설정해주어도 이모티콘이 정상적으로 표시되긴 한다.