리눅스 파일 구조가 UTF-8인 환경에서는 제로보드 및 DQstyle에서 한글파일이 제대로 처리 되지 않습니다.
그래서 간단하게 UTF-8로 소스코드를 인코딩 하면 문제를 해결할 수 있습니다.
*전체 소스코드를 UTF-8로 변경하는 것이므로 이후 제로보드에 새로운 스킨을 추가할때도 UTF-8로 변경하셔야 합니다.*
참고) 사이트의 규모가 커서 첨부파일이 아주 많다면 아래 작업을 수행하기 전에, 제로보드의 data 폴더와 data2 폴더를 mv명령어로 사이트 외의 폴더로 이동시키고 작업하면 빠릅니다.
그리고 사이트에 쓸데없는 sql파일이 있다면 삭제해주세요. sql 파일이 용량이 커서 오래거릴거나 에러 납니다.
0. 사이트를 백업합니다. 만약의 사태에 대비해야지요^^;
1. 아래 파일을 다운 받아서 압축을 풀면 나오는 파일을 홈페이지 루트에 올립니다.
2. php환경에서는 ssh나 telnet으로 접속해서 [ php conv2utf8.php ] 라고 실행시키면 utf-8 변환 작업을 수행합니다.
python 환경용으로 확장자가 py인 파일도 있으니 python 환경에서 쓰시면 됩니다.
3. 소스코드 내부에 삽입된 euc-kr를 지정하는 메타태그를 찾아바꾸기 합니다.
아래 명령어를 사용하면 되는데, find에서 or 검색을 잘 모르겠고 대소문자 무시를 잘 모르겠어서 4번이나 해야됩니다.
더 좋은 방법을 아시면 댓글로 달아주세요^^; 아니면 그냥 이렇게 4번 하시면 됩니다.
find . -name "*.php" -exec perl -pi -e 's/EUC-KR/utf-8/g' {} \;
find . -name "*.html" -exec perl -pi -e 's/euc-kr/utf-8/g' {} \;
find . -name "*.html" -exec perl -pi -e 's/EUC-KR/utf-8/g' {} \;
혹시나 남은 euc의 잔재가 있을 수 있으므로 아래 명령어로 다시 체크를 해봅시다.
find . -name '*.php' -print | xargs fgrep -ni 'euc'
4. 작업이 끝난후 제로보드 경로로 이동 lib.php 파일을 엽니다. [ vi lib.php]
파일 상단에 버젼 표시 위에 [ @header("Content-Type: text/html; charset=utf-8"); ] 를 넣습니다.
[ @mysql_select_db ]를 찾아 (dbconn함수 안에) 그 아래에
[ @mysql_query("set names utf8", $connect); ] 를 붙여넣어서 DB를 utf-8로 불러옵니다.
[ function cut_str ]를 찾아 그 함수 전체를 아래 함수로 변경해줍니다. 문자열 자르기 할때 깨지지 않게 하는 것입니다.
if($cut_size<=0) return $msg;
if(ereg("\[re\]",$msg)) $cut_size=$cut_size+4;
$max_size = $cut_size;
$i=0;
while(1) {
if (ord($msg[$i])>127)
$i+=3;
else
$i++;
if (strlen($msg) < $i)
return $msg;
if ($max_size == 0)
return substr($msg,0,$i).$dot;
else
$max_size--;
}
}
이렇게 하고 만약 data폴더와 data2폴더를 이동시켰다면 다시 mv 명령어로 원상복귀 시키고 사이트에 접속하면 됩니다.
conv2utf.zip

댓글을 달아 주세요