웹 페이지를 개발하다 보면 흔히 겪는 일이있다.
바로 한글이 깨져서 나오는 경우.
한글이 깨져서 DB에 저장되는 경우.
등등...
대부분의 이유는 전달받을 때 또는 출력할 때 인코딩이 깨진 게 이유일 확률이 높다.
특히 전달받은 문자가 인코딩이 다르게 설정된 채로 전달되는 경우도 있으니, 특정 문자만 인코딩을 변경 할 필요도 있다.
바로 mb_detect_encoding를 이용하면 되는데 아래처럼 쓸 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
/* $str의 문자 인코딩을 출력한다. */
echo mb_detect_encoding($str);
해당 함수에서 사용되는 캐릭터셋의 종류는 mb_list_encodings() 함수를 쓰면 배열로 리턴되어 알 수 있다.
Array
(
[0] => pass
[1] => auto
[2] => wchar
[3] => byte2be
[4] => byte2le
[5] => byte4be
[6] => byte4le
[7] => BASE64
[8] => UUENCODE
[9] => HTML-ENTITIES
[10] => Quoted-Printable
[11] => 7bit
[12] => 8bit
[13] => UCS-4
[14] => UCS-4BE
[15] => UCS-4LE
[16] => UCS-2
[17] => UCS-2BE
[18] => UCS-2LE
[19] => UTF-32
[20] => UTF-32BE
[21] => UTF-32LE
[22] => UTF-16
[23] => UTF-16BE
[24] => UTF-16LE
[25] => UTF-8
[26] => UTF-7
[27] => UTF7-IMAP
[28] => ASCII
[29] => EUC-JP
[30] => SJIS
[31] => eucJP-win
[32] => SJIS-win
[33] => CP932
[34] => CP51932
[35] => JIS
[36] => ISO-2022-JP
[37] => ISO-2022-JP-MS
[38] => Windows-1252
[39] => Windows-1254
[40] => ISO-8859-1
[41] => ISO-8859-2
[42] => ISO-8859-3
[43] => ISO-8859-4
[44] => ISO-8859-5
[45] => ISO-8859-6
[46] => ISO-8859-7
[47] => ISO-8859-8
[48] => ISO-8859-9
[49] => ISO-8859-10
[50] => ISO-8859-13
[51] => ISO-8859-14
[52] => ISO-8859-15
[53] => ISO-8859-16
[54] => EUC-CN
[55] => CP936
[56] => HZ
[57] => EUC-TW
[58] => BIG-5
[59] => EUC-KR
[60] => UHC
[61] => ISO-2022-KR
[62] => Windows-1251
[63] => CP866
[64] => KOI8-R
[65] => KOI8-U
[66] => ArmSCII-8
[67] => CP850
[68] => JIS-ms
[69] => CP50220
[70] => CP50220raw
[71] => CP50221
[72] => CP50222
)
|
예시는 다음과 같다.
1
2
3
4
5
6
7
8
|
$str = "인코딩확인";
$enc = mb_detect_encoding($str, array("UTF-8", "EUC-KR", "SJIS"));
/* 참고로 SJIS 는 일본에서 자주 쓰는 인코딩입니다. */
/* 배열안에 해당하는 캐릭터 셋을 찾아서 저장한다. */
if ($str != "UTF-8") {
$str = iconv($enc, "UTF-8", $str);
// $str값을 $enc라는 인코딩에서 UTF-8 로 변경하여 저장한다.
}
|
'IT기술 > php' 카테고리의 다른 글
mysqli 의 사용법 (0) | 2018.10.06 |
---|---|
php 모듈 작동하는지 확인하기 (0) | 2018.10.06 |
PHP 인코딩 확인하기 mb_detect_encoding() (0) | 2018.10.06 |
문자열의 모든 줄바꿈 앞에 HTML 줄바꿈 태그를 삽입 (0) | 2018.10.06 |
php 넘어온 값(request) 확인 (0) | 2018.10.06 |