G4- utf8 mysql정리 및 제로에서 이전 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

G4- utf8 mysql정리 및 제로에서 이전 정보

G4- utf8 mysql정리 및 제로에서 이전

본문

드디어 utf8세팅에 성공했네요, ㅎ
팁이 될지 모르겠지만, 저같은 분들을 위해 올립니다. 관리자분이 보시고 필요없다 싶으면 삭제하세요.
<참고: 유니코드(Unicode)와 유니코드 인코딩 http://www.jinsuk.pe.kr/Unicode/Unicode_intro-kr.html>

win xp sp2 , apache 2.0.54, php 4.3.11, mysql 4.1.12에서

아래와 같이 세팅

1. mysql

[mysqld]
port = 3306
socket = mysql
skip-locking
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'
default-character-set=utf8
character-set-server = utf8
collation-server = utf8_general_ci

2. php
default_charset ="utf-8"

3. httpd.conf
DefaultLanguage ko
AddDefaultCharset UTF-8

4. web
utf-8
이렇게 세팅해야 utf8이 제대로 세팅이 되었다는군요.

* 참고로 windows는 c:\my.cnf를 두는게 젤 났습니더 ㅠㅠ(이거 땜시...)

5. 쥐4는 위버에서 파일 하나씩 캐릭셑을 변경해 줬습니다. (203개인지, 몇갠지는 모르지만)
  -수정 -> 페이지속성 -> 제목/인코딩 -> utf-8
  다른 이름으로 저장


6. 제로보드는 4.0대에서 4.1대로 변경
  http://dev.mysql.com/doc/mysql/en/charset-conversion.html  를 참조하여 수정

  <?php
/* $Id: mysqlupgrade.php,v 1.3 2005/01/31 22:04:02 shimon Exp $ */
// upgrade CHARACTER SET for MySQL 4.1.0 +
//
// Did you export all databases including mysql database before runing this file ?
//
// known bug of this program it dont know to treat FULLTEXT index
//
//by Shimon Doodkin *** 개인정보보호를 위한 이메일주소 노출방지 ***

$conn = mysql_connect("localhost", "mashovim.co.il", "***");
$printonly=true; //change this to false to alter on the fly
$charset="hebrew";
$collate="hebrew_general_ci";
$altertablecharset=true;
$alterdatabasecharser=true;

function PMA_getDbCollation($db)
{
$sq='SHOW CREATE DATABASE `'.$db.'`;';
$res = mysql_query($sq);
if(!$res) echo "\n\n".$sq."\n".mysql_error()."\n\n"; else
if($row = mysql_fetch_assoc($res))
{
  $tokenized = explode(' ', $row[1]);
  unset($row, $res, $sql_query);
  for ($i = 1; $i + 3 < count($tokenized); $i++)
  {
  if ($tokenized[$i] == 'DEFAULT' && $tokenized[$i + 1] == 'CHARACTER' && $tokenized[$i + 2] == 'SET')
  {
    if (isset($tokenized[$i + 5]) && $tokenized[$i + 4] == 'COLLATE')
    {
    return array($tokenized [$i + 3],$tokenized[$i + 5]); // We found the collation!
    }
    else
    {
    return array($tokenized [$i + 3]);
    }
  }
  }
}
return '';
}

?>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1251<? //remember to change it if needed ?>" />
<xmp>
<?

$rs2 = mysql_query("SHOW DATABASES");
if(!$rs2) echo "\n\n".$sq."\n".mysql_error()."\n\n"; else
while ($data2 = mysql_fetch_row($rs2))
{
$db=$data2[0];
$db_cha=PMA_getDbCollation($db);
if ( $db!='mysql' /* &&( $db=='mydb_x' || $db=='mydb_y' ) */ ) // limit to database(s) - $db=='mydb_x' || $db=='mydb_y' || $db=='mydb_z'
if ( substr($db_cha[0],0,4)!='utf8' ) // limit to charset
{
mysql_select_db($db);
$rs = mysql_query("SHOW TABLES");
if(!$rs) echo "\n\n".$sq."\n".mysql_error()."\n\n"; else
while ($data = mysql_fetch_row($rs))
{
$rs1 = mysql_query("show FULL columns from $data[0]");
if(!$rs1) echo "\n\n".$sq."\n".mysql_error()."\n\n"; else
while ($data1 = mysql_fetch_assoc($rs1))
{
  if(in_array(array_shift(split("\\(",$data1['Type'],2)),array(
//'national char',
//'nchar',
//'national varchar',
//'nvarchar',
'char',
'varchar',
'tinytext',
'text',
'mediumtext',
'longtext',
'enum',
'set'
  )))
  {
  if(substr($data1['Collation'],0,4)!='utf8') // limit to charset
  {
    $sq="ALTER TABLE `$data[0]` CHANGE `".$data1['Field'].'` `'.$data1['Field'].'` '.$data1['Type'].' CHARACTER SET binary '.($data1['Default']==''?'':($data1['Default']=='NULL'?' DEFAULT NULL':' DEFAULT \''.mysql_escape_string($data1['Default']).'\'')).($data1['Null']=='YES'?' NULL ':' NOT NULL').';';
    if(!$printonly&&!mysql_query($sq)) echo "\n\n".$sq."\n".mysql_error()."\n\n";
    else
    {
    echo ($sq."\n") ;
    $sq="ALTER TABLE `$data[0]` CHANGE `".$data1['Field'].'` `'.$data1['Field'].'` '.$data1['Type']." CHARACTER SET $charset ".($collate==''?'':"COLLATE $collate").($data1['Default']==''?'':($data1['Default']=='NULL'?' DEFAULT NULL':' DEFAULT \''.mysql_escape_string($data1['Default']).'\'')).($data1['Null']=='YES'?' NULL ':' NOT NULL').($data1['Comment']==''?'':' COMMENT \''.mysql_escape_string($data1['Comment']).'\'').';';
    if(!$printonly&&!mysql_query($sq)) echo "\n\n".$sq."\n".mysql_error()."\n\n";
    else echo ($sq."\n") ;
    }
  }
  }
}
if($altertablecharset)
{
  /*
  $sq='ALTER TABLE `'.$data[0]."` DEFAULT CHARACTER SET binary";
  echo ($sq."\n") ;
  if(!mysql_query($sq)) echo "\n\n".$sq."\n".mysql_error()."\n\n";
  */
  $sq='ALTER TABLE `'.$data[0]."` DEFAULT CHARACTER SET $charset ".($collate==''?'':"COLLATE $collate");
  echo ($sq."\n") ;
    if(!$printonly)
  if(!mysql_query($sq)) echo "\n\n".$sq."\n".mysql_error()."\n\n";
}
}
if($alterdatabasecharser)
{
  /*
  $sq='ALTER DATABASE `'.$data2[0]."` DEFAULT CHARACTER SET binary";
  echo ($sq."\n") ;
  if(!mysql_query($sq)) echo "\n\n".$sq."\n".mysql_error()."\n\n";
  */
  $sq='ALTER DATABASE `'.$data2[0]."` DEFAULT CHARACTER SET $charset ".($collate==''?'':"COLLATE $collate");
  echo ($sq."\n") ;
    if(!$printonly)
  if(!mysql_query($sq)) echo "\n\n".$sq."\n".mysql_error()."\n\n";
}
}
}
?>
이를 실행하여 제로보드d의 db를 4.1대의 utf8로 업그레이드.


7. 자료실의 zb2gnu3.php, 기타 zb2gun3.php, zb2gnu3_mb.php, zb2gnu3_point.php를 사용하여 업.
 * 다른 포인트는 db에서 직접 카피

8. g4/convert로 g4로 업그레이드

한글utf g4설치 완료.

저같은 쵸뵤분들을 위해 gnuboard4-05.06.06-utf8-org를 올려 놓겠습니다.
업데이트되는 파일들은 각자가 드림위버로 작업하시고, 좋은 팁들이 있으시면 가르쳐 주시면 고맙겠습니다.
phpmyadmin은 뺏으니 알아서 넣으시면 될겁니다.
[이 게시물은 관리자님에 의해 2005-06-15 14:47:24 G3 팁앤테크에서 이동 됨]
추천
0

댓글 3개

전체 12 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT