다국어 웹사이트 (유니코드로 데이타 저장) |
|
php iconv 함수 사용법 |
|
운영자 |
|
ㅣ 기사입력 |
2005/02/13 [15:58] |
|
|
|
한국어와 일본어를 동시에 보여주기 위해서는
charset를 uft-8로 하고 문서는html이나 php를 uft8 방식으로 저정을 하며 되는데 (<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">)
문제는 기존의 db에 있는 데이타를 utf8로 변환을 해야 하는데
php에서 변환 할 수 있는 함수를 찾아보니 iconv 란 함수가 있는데 이 함 수를 쓰기 위해서는 라이브러리가 필요한데 http://www.gnu.org/software/libiconv/에서 다운 후
압축을 푼 후 ./configure --prefix=/usr/local make make install
설치 후
다시 php 컴파일시
--with-iconv=/usr/local 이 옵션을 추가 해서 설치 해야 iconv 함수를 사용 가능 하다.
저의 설치 예
./configure --with-mysql=/usr/local/mysql --with-apache=../apache_1.3.26 \
--with-iconv=/usr/local --with-gd -with-jpeg-dir \
--with-png-dir --with-zlib-dir
설치 완료 후 iconv 함수는 아래 처러 사용한다.
$string= iconv("euc-kr","UTF-8",$string);
다음에 간단하게 스크립트를 만들어 기존의 데이블에 있는 데이타를
불려 utf8로 변환 후 db에 넣는 구문이다.
<? function utf8_exchange($string) {
$string= iconv("euc-kr","UTF-8",$string);
return $string; }
include("./newlib/lib.php");
$dbconn= DB_Conn(); // db 연결 DB_Select ();
$sql="select * from bbs order by uid ASC";
$query = mysql_query($sql,$dbconn);
while(list($uid,$id,$writer,$passwd,$email,$homepage,$wdate,$indent,$subject,$contents,$count,$userfile)= mysql_fetch_array($query)) {
$writer=utf8_exchange($writer); $passwd=utf8_exchange($passwd); $email=utf8_exchange($email); $subject=utf8_exchange($subject); $contents=utf8_exchange($contents); $userfile=utf8_exchange($userfile);
$sql2="insert into bbs2 values('$uid','$id','$writer','$passwd','$email','$homepage','$wdate','$indent','$subject','$contents','$count','$userfile')";
$query2 = mysql_query($sql2,$dbconn);
if($query2) { echo("ok<br>"); }else { echo("fail<br>"); }
}
echo("끝 >");
mysql_close($dbconn);
?>
그리고 메모장으로 utf-8로 저장하고 <? session_start(); ?> 을 하면 에러나 나온다 이렇 경우에는 울트라 에디터로 열어어서 헥사코드로 보면 앞에 3바이트정도가 들어가는 것이 있는데 이것을 지우면 된다.
|
|
|
|
|
기사입력: 2005/02/13 [15:58] 최종편집: ⓒ iwav |
|
|
|
|