utf-8 로 이전하기.
1. MySQL
- euckr 스키마 백업
mysqldump --all-databases --no-data --set-charset=euckr -p > backup.scheme.sql
- euckr 자료 백업
mysqldump --all-databases --no-create-db --set-charset=euckr -p > backup.data.sql
웬만하면 사용자계정 정보는 암호까지 확실하게 알고있자.
GRANT ALL 쿼리문을 직접 작성하여 가지고 있자.
- UTF-8 을 제대로 지원하기 위해 버전을 5.x 로 올린다.
(varchar(1) 은 1byte 가 아닌 한글자를 의미하게 된다.
set names 만으로 클라이언트의 캐릭터셋을 맞출 수 있다.)
= backup.scheme.sql =
테이블 중 BLOB 형식이나 BINARY 속성 필드에 문자열이 들어가는 곳이 있다면,
TEXT 형식으로 바꾸거나 BINARY 속성을 없앤다.
DEFAULT '0' 같은 잘못된 따옴표를 고친다.
TYPE=MyISAM 같은건 ENGINE=MyISAM 으로 수정한다.
맨 위쪽의 SET NAMES euckr 을 제외한 모든 CHARACTER SET 의 euckr 을 utf8 로 수정한다.
cat backup.scheme.sql | mysql -p
= backup.data.sql =
head backup.data.sql # 맨 위쪽에 SET NAMES euckr 이 있으면 충분하다.
cat backup.data.sql | mysql -p
- 사용자계정을 GRANT ALL 문으로 다시 만들어준다.
root 지워버리지 않게 주의.
이전 MySQL 에 charset 관련 옵션이 없다면,
스키마는
cat backup.scheme.sql | mysql -p --default-character-set=utf8
데이터는
cat backup.data.sql | mysql -p --default-character-set=euckr
로 복구하면 된다.
스키마는 꼭 꼼꼼히 살펴보고 편집하자.
2. 파일
모든 파일의 내용을 utf8 로 바꾸자.
조건에 따라 동작이 달라지므로 php 를 이용하자.
/toutf.php
<?php
$f = $_SERVER['argv'][1];
if(!file_exists($f)) {
echo $f." file not found.\n";
}
$text = file_get_contents($text);
$text8 = @iconv('CP949', 'UTF-8//IGNORE', $text);
$cnt = strlen($text);
$cnt8 = strlen($text8);
if($cnt <= $cnt8) {
// 제대로 변경이 되었다면 용량이 커졌을 것이다.
// 용량이 같다면 한글이 없는 것이다.
rename($f, $f.'.euckr'); // 백업
file_put_contents($f, preg_replace('/charset=euc-kr/i', 'charset=utf-8', $text8));
echo $f." file is converted.\n";
} else {
// 용량이 작아진다면 잘못된 것이다.
$fp = fopen('/error.txt', 'a');
fwrite($fp, $f."\n");
fclose($fp);
}
?>
find /home -type f -name "*.php" -exec php /toutf.php "{}" \;
find /home -type f -name "*.inc" -exec php /toutf.php "{}" \;
find /home -type f -name "*.txt" -exec php /toutf.php "{}" \;
find /home -type f -name "*.html" -exec php /toutf.php "{}" \;
find /home -type f -name "*.htm" -exec php /toutf.php "{}" \;
find /home -type f -name "*.js" -exec php /toutf.php "{}" \;
find /home -type f -name "*.css" -exec php /toutf.php "{}" \;
현재 UTF-8 이 아닌 곳이 없기 때문에,
기억을 더듬어 대충 만들었다.
적용전 백업은 필수다.
에디터는 EmEditor, DreamWeaver CS3 를 추천한다.
FTP 는 WinSCP 4 를 추천한다. 윈도 커멘더 모드로 하면 파일명이 지X 같아도 잘 올리고 받아질 것이다.
WinSCP 의 에디터로 EmEditor 를 설정하면 무적이다.
EmEditor 는 기능이 조금 제한된 free 버전이 있다.
1. MySQL
- euckr 스키마 백업
mysqldump --all-databases --no-data --set-charset=euckr -p > backup.scheme.sql
- euckr 자료 백업
mysqldump --all-databases --no-create-db --set-charset=euckr -p > backup.data.sql
웬만하면 사용자계정 정보는 암호까지 확실하게 알고있자.
GRANT ALL 쿼리문을 직접 작성하여 가지고 있자.
- UTF-8 을 제대로 지원하기 위해 버전을 5.x 로 올린다.
(varchar(1) 은 1byte 가 아닌 한글자를 의미하게 된다.
set names 만으로 클라이언트의 캐릭터셋을 맞출 수 있다.)
= backup.scheme.sql =
테이블 중 BLOB 형식이나 BINARY 속성 필드에 문자열이 들어가는 곳이 있다면,
TEXT 형식으로 바꾸거나 BINARY 속성을 없앤다.
DEFAULT '0' 같은 잘못된 따옴표를 고친다.
TYPE=MyISAM 같은건 ENGINE=MyISAM 으로 수정한다.
맨 위쪽의 SET NAMES euckr 을 제외한 모든 CHARACTER SET 의 euckr 을 utf8 로 수정한다.
cat backup.scheme.sql | mysql -p
= backup.data.sql =
head backup.data.sql # 맨 위쪽에 SET NAMES euckr 이 있으면 충분하다.
cat backup.data.sql | mysql -p
- 사용자계정을 GRANT ALL 문으로 다시 만들어준다.
root 지워버리지 않게 주의.
이전 MySQL 에 charset 관련 옵션이 없다면,
스키마는
cat backup.scheme.sql | mysql -p --default-character-set=utf8
데이터는
cat backup.data.sql | mysql -p --default-character-set=euckr
로 복구하면 된다.
스키마는 꼭 꼼꼼히 살펴보고 편집하자.
2. 파일
모든 파일의 내용을 utf8 로 바꾸자.
조건에 따라 동작이 달라지므로 php 를 이용하자.
/toutf.php
<?php
$f = $_SERVER['argv'][1];
if(!file_exists($f)) {
echo $f." file not found.\n";
}
$text = file_get_contents($text);
$text8 = @iconv('CP949', 'UTF-8//IGNORE', $text);
$cnt = strlen($text);
$cnt8 = strlen($text8);
if($cnt <= $cnt8) {
// 제대로 변경이 되었다면 용량이 커졌을 것이다.
// 용량이 같다면 한글이 없는 것이다.
rename($f, $f.'.euckr'); // 백업
file_put_contents($f, preg_replace('/charset=euc-kr/i', 'charset=utf-8', $text8));
echo $f." file is converted.\n";
} else {
// 용량이 작아진다면 잘못된 것이다.
$fp = fopen('/error.txt', 'a');
fwrite($fp, $f."\n");
fclose($fp);
}
?>
find /home -type f -name "*.php" -exec php /toutf.php "{}" \;
find /home -type f -name "*.inc" -exec php /toutf.php "{}" \;
find /home -type f -name "*.txt" -exec php /toutf.php "{}" \;
find /home -type f -name "*.html" -exec php /toutf.php "{}" \;
find /home -type f -name "*.htm" -exec php /toutf.php "{}" \;
find /home -type f -name "*.js" -exec php /toutf.php "{}" \;
find /home -type f -name "*.css" -exec php /toutf.php "{}" \;
현재 UTF-8 이 아닌 곳이 없기 때문에,
기억을 더듬어 대충 만들었다.
적용전 백업은 필수다.
에디터는 EmEditor, DreamWeaver CS3 를 추천한다.
FTP 는 WinSCP 4 를 추천한다. 윈도 커멘더 모드로 하면 파일명이 지X 같아도 잘 올리고 받아질 것이다.
WinSCP 의 에디터로 EmEditor 를 설정하면 무적이다.
EmEditor 는 기능이 조금 제한된 free 버전이 있다.
(출처:http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=58038&page=1)
'정보의바다' 카테고리의 다른 글
스포츠 글라스란?, 고글의 선택, 선그라스와 칼라, 편광렌즈 (0) | 2007.12.17 |
---|---|
콘택트 렌즈,난시용 소프트 렌즈, 하드 RGP 렌즈, 일회용 콘택트렌즈, 미용칼라 렌즈,콘택트렌즈 관리, contact lens (0) | 2007.12.17 |
선글라스의 선택, 선글라스의 칼라, 선글라스와 자외선 차단 (0) | 2007.12.17 |
안경의 유래, 안경렌즈의 처리, 멀티코팅, 자외선 차단 처리, 안경테 디자인과 스타일 (0) | 2007.12.17 |
2007년 영화 개봉작품 목록 (0) | 2007.12.17 |
논문에서 자주 쓰이는 표현들의 진실 (0) | 2007.12.17 |
디도스 공격 근원지는 '중국' DDoS - DROP으로 차단하기 (0) | 2007.12.17 |
틴들 현상 (0) | 2007.12.17 |