본문 바로가기
Database/MYSQL

안드로이드,ios 이모티콘(emoji)과 기록 관련

by 반화넬 2015. 10. 28.
반응형

 

안드로이드,ios 이모티콘를 기록 하기 위해 검색 결과 utf8em4 변경하는 문서가 가장 많았다

하지만. Mysql 5.5 이므로 VARBINARY 컬럼 및 Type 변경만으로 해당 부분 해결이 가능하였다

 

 1. 컬럼 타입 변경  으로 해결 가능함

 2. TEXT 컬럼을 이용할경우는

    json Data 로 만들서 data 기록 하고 추출하여 사용하는것도 괜찮은 방법 같음.

 

 $변수 = preg_replace("/\\\\u([a-f0-9]{4})/e", "iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))", json_encode(array Data));

 

  3. 그게 아니라면 encode , decode 하여 data 기록 후 사용하는것도 괜찮음

     string utf8_encode ( string $data )

     string utf8_decode ( string $data )

 

그래도 가장 편한건 컬럼 변경 .ㅋ ~ 변환할 data가 많다면 2번도 괜찮음

 

추가로... 변수 타입 설명

 

MySQL 데이터 타입



MySQL 에서 사용하는 데이터 타입에 대해서 알아본다. 


  CHAR 데이터 타입

CHAR와 VARCHAR(VARiable length CHARacter string)은 모두 텍스트 문자열을 허용하고, 필드의 크기를 제한한다. 두 타입의 차이점은 CHAR 필드의 모든 문자열은 크기가 정해진다는 것. 즉 더 작은 문자열을 입력하면 공백으로 채워진다. 반면 VARCHAR의 경우, 텍스트를 채우지 않으며, 입력한 텍스트 크기에 맞게 가변적으로 크기를 가진다. 그러나, VARCHAR는 각 값의 크기를 추적할 수 있는 약간의 오버헤드가 필요하기 때문에 모든 데이터의 크기가 비슷하다면, CHAR가 더 효율적이다.


TYPE  

사용되는 바이트 

예제 

CHAR(n) 

정확히 n (<=255) 

CHAR(5) 'Hello'는 5바이트 사용

CHAR(50) 'Hello'는 50바이트 사용 

 VARCHAR(n)

최대 n 까지(<=65535) 

VARCHAR(100)'Hello'는 5바이트 사용

VARCHAR(5) 'Hello'는 5바이트 사용

 



  BINARY 데이터 타입 

BINARY 데이터 타입은 관련된 문자 세트가 없는 문자의 전체 바이트를 저장하는데 사용된다. 예를 들면 GIF 이미지를 저장하는데 사용할 수 있다. 


TYPE  

사용되는 바이트 

예제 

BINARY(n) 혹은 BYTE(n) 

정확히 n (<=255) 

CHAR이지만 바이너리 데이터를 가짐 

 VARBINARY(n)

최대 n 까지(<=65535) 

VARCHAR이지만 바이너리 데이터를 가짐


 


  TEXT와 VARCHAR 데이터 타입

TEXT와 VARCHAR에는 작은 차이점이 있다. 


TEXT 필드는 기본 값을 가질 수 없다. 

MySQL은 TEXT 열의 처음 n 개의 문자만 인덱싱 할 수 있다. 


이것은, 만약 전체 내용을 검색할 때는 VARCHAR이 더 알맞고, 빠르다는 것이다.


 TYPE

사용되는 바이트 

속성 

 TINYTEXT(n)

최대 n (<=255)

문자열로 취급

 TEXT(n)

최대 n (<=65535)

문자열로 취급

 MEDIUMTEXT(n)

최대 n (<=16777215)

문자열로 취급

 LONGTEXT(n)

최대 n (<=4294967295)

문자열로 취급

 



  BLOB 데이터 타입

BLOB(Binary Large OBject)는 65535 바이트를 넘는 바이너리 데이터에 유용하며, 기본 값을 가질 수 없다. 


 TYPE

사용되는 바이트 

속성 

TINYBLOB(n)

최대 n (<=255)

바이너리 데이터로 취급

 BLOB(n)

최대 n (<=65535)

바이너리 데이터로 취급

 MEDIUMBLOB(n)

최대 n (<=16777215)

바이너리 데이터로 취급

 LONGBLOB(n)

최대 n (<=4294967295)

바이너리 데이터로 취급


 


  숫자형 데이터 타입


 TYPE

사용되는 바이트 

최소 값

(signed/unsigned) 

대 값

(signed/unsigned) 

TINYINT

-128

127
255 

SMALLINT 

-32768

32767
65535 

MEDIUMINT

-8388608

8388607
16777215 

INT or INTEGER

-2147483648

2147483647
4294967295 

BIGINT

-9223372036854775808

9223372036854775807

18446744073709551615

FLOAT

-3.40E+45
(no unsigned) 

3.40E+45

(no unsigned) 

DUBLE or REAL

-1.7976E+320
(no unsigned)   

1.7976E+320
(no unsigned)   

 



반응형