태터툴즈 고쳐쓰기 #11 - UTF-8 RSS 읽기, 트랙백 보내기

태터툴즈 1.0부터는 UTF-8 기반이므로 이 내용은 1.0 미만에만 해당되는 내용임.

UTF-8 문자로 작성된 블로그에 트랙백을 보낼때면 상대방의 사이트에는 깨진 문자로 기록된다. 곧 태터툴즈 새버전에서 이 문제가 해결될 것 같지만 그때까지는 임시방편으로 태터툴즈를 약간 고쳐서 써야한다. 또, 역시 UTF-8로 작성된 RSS도 태터툴즈 리더에서는 읽을 수 없는데 이것도 간단한 변환 프로그램을 통해서 (임시로) 해결할 수 있다. 모두 iconv() 함수를 이용하는 방법이라 iconv를 지원하지 않는 서버에서는 사용할 수 없다. (예를 들면 80PORT 등)

먼저 UTF-8로 제공되는 RSS를 태터 리더에서 읽으려면,

1. 우선 HTTP 접속하는 PHP 클래스 여기 있는 http.php 파일을 받아서 계정에 올려놓고

2. 같은 경로에 아래의 코드를 utf8rss.php 등의 이름으로 저장한다
<?
    include "http.php";

    header("Content-type: text/xml");

    preg_match("/^(http:\\/\\/)?([A-Za-z0-9.]+)(\\/.*)/", $_GET["uri"], $matches);

    $h = new http($matches[2], 80);
    $h->setTarget($matches[3]);
    $h->sendData();

    echo iconv("UTF-8", "CP949//IGNORE", preg_replace("/encoding=\"UTF-8\"/i", "encoding=\"EUC-KR\"", $h->getBody()));

    $h->close();
?>

3. 원래의 RSS 주소가 http://foo.com/index.xml 이고 위에서 작성한 utf8rss.php 파일의 경로가 http://mydomain.com/utf8rss.php 라면 태터툴즈 리더 주소록에 이렇게 등록하면 끝이다.
http://mydomain.com/utf8rss.php?uri=http://foo.com/index.xml

어디까지나 임시방편이므로 에러처리 부분은 넣지 않았다. hof님 블로그가 UTF-8로 바뀐 뒤로 계속 써오는 동안 별다른 에러는 없었으니 크게 걱정할 부분은 안되겠지만.. 다시한번 강조하지만 이건 임시방편..;

그리고 태터툴즈에서 UTF-8 블로그로 트랙백을 보내는 방법

1. 태터툴즈 admin/article_trackback_pop.php 파일 100번째줄에 아래의 내용을 끼워넣는다.
<table cellpadding="0" cellspacing="0" style="margin-bottom:5"><tr>
<td width="80" align="right" style="padding-top:3">인코딩 ::&nbsp;</td>
<td style="padding-top:3">
    <input type="radio" name="encoding" id="encoding1" value="euc-kr" checked>
    <label for="encoding1">기본값</label>
    <input type="radio" name="encoding" id="encoding2" value="utf-8">
    <label for="encoding2">UTF-8</label>
</td>
</tr></table>

2. 이번엔 39번째줄에서 아래 문장을 찾아,
$data ="url=".rawurlencode($plink)."&title=".rawurlencode($title)."&blog_name=".rawurlencode($p_title)."&excerpt=".rawurlencode($body);

위 문장 바로 에 아래의 내용을 추가하면 작업 끝.

if( $encoding == "utf-8" )
{
    $plink = iconv("EUC-KR", "UTF-8//IGNORE", $plink);
    $title = iconv("EUC-KR", "UTF-8//IGNORE", $title);
    $p_title = iconv("EUC-KR", "UTF-8//IGNORE", $p_title);
    $body = iconv("EUC-KR", "UTF-8//IGNORE", $body);
}

이제 UTF-8 블로그에 트랙백을 보낼때 인코딩 항목에서 UTF-8을 체크한 후 SEND 하면 된다. (트랙백 테스트할 곳이 없으신 분은 http://crizin.net/soojung/entry.php?blogid=1 이쪽으로 가셔서 트랙백을 보내보세요)
태그 :