묻고답하기
utf8 변환 문제
2007.10.24 12:56
안녕하세요.
제로보드를 이용해 게시판을 생성해서 일본어를 입력하고 있는데.
잘됩니다^^
여기까진 문제가 없는데요.
제 홈페이지에 최신글 목록을 표시하기 위해서 위젯을 사용안하고
제가 디비쿼리를 직접해서 뿌려주려고 하는데..
utf8변환에서 문제가 있는지 제대로 변환이 안되네요.
사용한 변환은 제로보드에 있는걸 참조했구요.
/**
* @brief object내의 variables의 문자열을 utf8로 변경
**/
function convertEncoding($source_obj) {
$charset_list = array(
'UTF-8', 'EUC-KR', 'CP949', 'ISO-8859-1', 'EUC-JP'+
'+
', 'SHIFT_JIS', 'CP932',
'EUC-CN', 'HZ'+
', 'GBK', 'GB18030', 'EUC-TW', 'BIG5', 'CP950', 'BIG5-HKSCS',
'ISO-2022-CN', 'ISO-2022-CN-EXT', 'ISO-2022-JP', 'ISO-2022-JP-2', 'ISO-2022-JP-1',
'ISO-8859-6', 'ISO-8859-8', 'JOHAB', 'ISO-2022-KR', 'CP1255', 'CP1256', 'CP862',
'ASCII', 'ISO-8859-1', 'ISO-8850-2', 'ISO-8850-3', 'ISO-8850-4', '+
'ISO-8850-5',
'ISO-8850-7', 'ISO-8850-9', 'ISO-8850-10', 'ISO-8850-13', 'ISO-8850-14',
'ISO-8850-15', 'ISO-8850-16', 'CP1250', 'CP1251', 'CP1252', 'CP1253', 'CP1254',
'CP1257', 'CP850', 'CP866',
);
$obj = clone($source_obj);
for($i=0;$i<count($charset_list);$i++) {
$charset = $charset_list[$i];
$flag = true;
foreach($obj as $key=>$val) {
if(!$val) continue;
if($val && iconv($charset,$charset,$val)!=$val) $flag = false;
}
if($flag == true) {
foreach($obj as $key => $val) $obj->{$key} = iconv($charset,'UTF-8'+
',$val);
return $obj;
}
}
return $obj;
}
/**
* @brief 특정 문자열만 utf-8로 변경
**/
function convertEncodingStr($str) {
$obj->str = $str;
$obj = convertEncoding($obj);
return $obj->str;
}
위 같이 선언하고 convertEncodingStr 을 이용하여 변환 하였습니다.
변환이 되기는 되는데 완전하지가 않은거 같습니다.(변환 안하면 아예 알아볼 수 없음)
원래 문자열은
ホームページ開始
이렇게 나타나야 하는데
ホ?ムペ?ジ開始
이렇게 나타나고 있습니다. 그래서 DB를 확인해 보니
디비에도 ホ?ムペ?ジ開始 이렇게 표시되어 있는데요.
하지만 제로보드에서 보면
ホームページ開始
이렇게 정상적으로 나옵니다. 해당 부분 처리를 어찌 해야 하는지 궁금한데.
좀 알려주시기 바랍니다ㅠㅠ 꼭이요
댓글 3
-
지나가다
2007.10.24 20:08
-
조진원631
2007.10.24 23:54
ホームページ開始 해당 문자열을 db에서 불러오지 않고 직접 입력해서 뿌렸을경우에는 깨지지 않습니다.
그럼 폰트 문제는 아니지 않을까요? -
핑크플로이드
2007.10.29 04:23
DB확인은 어떤 툴로 하셨나요?
phpmyadmin같은건가요?
php.ini에서 default_charset 설정과...
my.cnf에서 default-character-set 설정값은 뭔가요...
인코딩문제는 아랫분이 설명을~ 후다닥;;