[TatterTools] 리더보기 UTF-8 지원 (수정 버전)
태터툴즈 0.961 Countdown에서 자체적으로 제공하는 RSS리더는 아직까지 유니코드 UTF-8 인코딩을 지원하지 않아서, 대부분의 wordpress 기반 블로그를 읽을 수 없다는 단점이 있다.
간단하게 UTF-8을 지원하는 코드 작업을 해봤다.
* 어제 작성한 코드에 버그가 있어서 tt_xml_parser_into_struct() 함수에 한 줄 추가하였다. DB에서 “delete from t3_tts_rss_item;”을 실행하여 수집되어 있는 RSS 항목을 삭제하고 리더보기에서 T를 눌러 새로 RSS를 수집한다.
1) inc_function.php의 xml_parser() 함수와 tt_xml_parser_into_struct() 함수를 변경한다.
1. xml_parser()
if ($mdate == “0”) $mdate = “”;list($header, $body, $lmdate) = @get_remotefile($url, $mdate);
$st = get_sock_status($header);
// modified by terzeron
$encoding = “”;
if ($st == 200) {
// modified by terzeron
//if (strpos($body,”encoding=”UTF-8″”)) error_process(“02B5”);
if (strpos($body, “encoding=”UTF-8″”) or
strpos($body, “encoding=”utf-8″”))
$encoding = “utf-8”;
$vals = tt_xml_parser_into_struct($body, $encoding);
}
return array($st, $header, $body, $lmdate, $vals);
}
2. tt_xml_parser_into_struct()
$h_set = array();
$r_set = array();while ($n1 = strpos($body, ““);
if (!$n2 || $n1 > $n2) break;
$stamp = get_timestamp2();
$cval = substr($body, $n1+9, $n2-$n1-9);
// modified by terzeron
$temp_cval = $cval;
if ($encoding == “utf-8”)
$temp_cval = iconv(“utf-8”, “euc-kr”, $cval);
$body = str_replace(““, $stamp, $body);
$h_set[$stamp] = trim($temp_cval);
}
$b_set = explode(“<", $body);
foreach ($b_set as $k => $row) {
$inp = array();
$att_set = array();
$row = trim($row);
if (!$row) continue;
if (substr($row,0,1)==”/”) {
if (strpos($row, “item”)) { $inp[tag] = “ITEM”; $inp[type] = “close”; array_push($r_set, $inp); }
continue;
}
list($tag_inf, $val) = explode(“>”, $row);
// modified by terzeron
if ($encoding == “utf-8”)
$val = iconv(“utf-8”, “euc-kr”, $val);
이하 생략
2) 추가적으로 admin/reader_opml_import.php에서 tt_xml_parser_into_struct() 함수를 호출할 때, “” 파라미터를 하나 더 추가해줘야 한다.
댓글 6개
윗층남자
이런방법이 있군요. 바로 적용이 되네요.^^
새해 복많이 받으세요..
핑백 :
Terzeron
네, CREATE74님께서도 새해 복 많이 받으세요.
경애
오빠, 근데 이거 수정하신 뒤로 제 블로그에서는 오빠 블로그만 한글이 깨져보여요..
http://doongyi.grayrose.org/index.php?md=rss 참고 ^^
Terzeron
경애/이건 내가 이제 태터툴즈 1.0을 사용하기 때문에 RSS가 UTF-8로 만들어져서 생기는 문제 같아. 그러니까 위의 코드는 아주 약간의 땜빵일 뿐이고 최종적으로는 태터툴즈 0.9x를 쓰는 사람들은 모두 업그레이드를 하는 게 좋을 것 같네…
경애
아, 글쿤요. 업글을 해야하나;;