워드프레스 2.x.x 트래백핑 인코딩 문제 해결

January 24th, 2007 by 바람

가장 나은 방법 : 영팔님이 플러그인을 만들어 주셨습니다.
http://082net.com/2008/859/euckr-trackback-plugin/
위 링크의 플러그인을 사용하여 문제를 해결하는 것을 권장합니다. 이 포스트는 더이상 업데이트를 하지 않겠습니다.
-2008.8.24

Wordpress를 사용하다보면 UTF-8과 EUC-KR로 인코딩된 블로그간에 트랙백을 받거나 보낼때 글씨가 깨지게 된다. 이 hack은 다르게 인코딩된 블로그 사이의 트랙백이 깨지지 않게 하기 위한 것이다. UTF-8로 인코딩된 Wordpress 2.1 버전을 기준으로 작성되었다.

새로운 버전의 워드프레스가 나왔을 때 대처하는 요령

이 포스트에 새로운 버전에 대한 파일이 올라오지 않았을 경우 예전 버전용 파일을 업그레이드한 워드프레스에 덧씌우지 마세요. wp-trackback.php 파일과 comment.php 파일만 예전 버전이므로 제대로 작동할리 만무할뿐 아니라 치명적인 오류를 유발할 수 있습니다. 새버전의 파일에서 포스트의 내용에 나온 부분만 수동으로 고치는 방법만이 안전합니다. 이 포스트의 소스를 Copy해서 에디터에 Paste 할 경우에 작은따옴표(’)를 수정하셔야 합니다. mbstring 모듈 사용자는 wp-trackback.php 파일의 $charset에 EUC-KR을 추가함으로써 간단히 받는 트랙백 문제를 해결할 수 있습니다.

다운로드

Wordpress 1.5.x용 : 링크
Wordpress 2.0.x용 : 링크

Wordpress 2.1.0용 : 다운
Wordpress 2.1.3용 : 다운

Wordpress 2.2용 : 다운
Wordpress 2.2.1용 : 다운
Wordpress 2.2.2용 : 다운
Wordpress 2.3부터 2.3.3용 : 다운
Wordpress 2.5용 : 다운
Wordpress 2.5.1용 : 다운

다른 해결방법

영팔님이 약간의 hack이 필요한 플러그인을 만드셨습니다.
워드프레스 EUC-KR 트랙백 플러그인(HACK)

정태영님이 받는 트랙백용 플러그인을 만드셨습니다.
Korean Trackback Plugin

사용방법

받는 트랙백은 자동으로 변환된다.

보내는 트랙백은 트랙백 받는 블로그가 EUC-KR을 사용할 경우 트랙백 보내는 주소 앞에 !를 붙여서 사용한다.
Send trackbacks to: 의 트랙백 주소 적는 곳에 !http://트랙백주소 를 넣는다.
예) !http://www.windlike.net/blog/236/trackback/
2.0용 버전과 다르게 데이타베이스에는 !가 제거된 트랙백 주소만이 남는다.

같은 인코딩일 경우 그냥 트랙백 주소만 적는다. !를 붙여서 인코딩을 변환하면 오히려 깨진다.
예) http://www.windlike.net/blog/236/trackback/
상대의 인코딩을 알아내는 방법은 상대의 블로그를 열고 브라우져의 보기 - 인코딩 메뉴를 보면 알 수 있다.

[참고] 예전 버전들이 !를 제거하지 않고 데이터베이스에 기록한 이유는 인코딩을 잘못 선택하여 트랙백을 보냈을때 다시 보낼 수 있게 하기 위함이다. 즉 already pinged에 다르게 기록되므로 다시 보내는데 문제가 없다. 이번부터는 UTF-8 블로그에 !를 붙여서 보낸 경우 다시 보낼수 없지만(이미 트랙백을 보낸 주소이기 때문에) EUC-KR인 블로그에 !로 붙이지 않고 트랙백을 보냈다면 다시 !를 붙여서 보낼수 있다.(!를 붙이더라도 저장은 주소만 되므로 다시 보낼때 !가 붙은 주소를 다른 주소로 인식한다) 이 경우 already pinged에 같은 주소가 두개 존재하게 된다.
다른 문제점으로는 에디트 화면의 Trackbacks 폼에 !가 남아있다. PHP와 웹프로그래밍에 대한 이해가 부족하여 해결하지 못하였다. !를 지우고 다시 Save를 하면 사라진다.

주의사항

적용대상 :
- PHP 4.0.6 이상
- mbstring 모듈이나 iconv 모듈 둘 중 하나가 설치되어 있어야 함

확인방법 :
- 직접 호스팅 업체에 문의
- 다음 코드를 에디터를 이용하여 test.php로 저장한 후 브라우져에서 실행한다(미리 작성된 파일 : 다운)

<?php
echo 'PHP version: ' . phpversion() . '<br />';
if ( function_exists('mb_convert_encoding') ) echo 'mbstring OK!<br />';
else echo 'mbstring fail..<br />';
if ( function_exists('iconv') ) echo 'iconv OK!<br />';
else echo 'iconv fail..<br />';
?>

mbstring OK! 가 나오면 mbstring 모듈을 이용할 수 있다(둘 다 OK일 경우 이방법을 권장)
iconv OK! 가 나오면 iconv 모듈을 이용할 수 있다(mbstring fail 일 경우 이 방법으로 한다)
둘다 fail이면 호스팅 업체에서 둘 중 하나를 설치해 줄때까지 불가능하다

라이센스

Wordpress가 GPL이기 때문에 이 hack 역시 GPL을 따른다. 수정 및 재배포 모두 가능함.

지금까지 도움주신 분들

아거님, 입명이님, H.Moon님, BluedSnow님, 지윤님, UNFGroup님, unfusion님, 영팔

받는 트랙백핑 문제 해결(mbstring)

/wp-trackback.php를 열어 $charset에 EUC-KR을 추가한다

$charset = 'ASCII, UTF-8, EUC-KR, ISO-8859-1, JIS, EUC-JP, SJIS’;
mbstring 모듈을 사용할 수 있을 경우 직접 수정해서 사용하면 편리하다.

받는 트랙백핑 문제 해결(iconv)

/wp-trackback.php를 열어

if ( function_exists('mb_convert_encoding') ) {
$title = mb_convert_encoding($title, get_settings('blog_charset'), $charset);
$excerpt = mb_convert_encoding($excerpt, get_settings('blog_charset'), $charset);
$blog_name = mb_convert_encoding($blog_name, get_settings('blog_charset'), $charset);
}

아래에 다음을 추가한다

elseif ( function_exists('iconv') ) {
if ( !seems_utf8($title) )
$title = iconv('EUC-KR', 'UTF-8', $title);
if ( !seems_utf8($excerpt) )
$excerpt = iconv('EUC-KR', 'UTF-8', $excerpt);
if ( !seems_utf8($blog_name) )
$blog_name = iconv('EUC-KR', 'UTF-8', $blog_name);
}

보내는 트랙백핑 문제 해결

/wp-includes/comment.php를 열어 trackback 함수를 찾는다

function trackback($trackback_url, $title, $excerpt, $ID) {
global $wpdb, $wp_version;
if ( empty($trackback_url) )
return;
$title = urlencode($title);
$excerpt = urlencode($excerpt);
$blog_name = urlencode(get_option(’blogname’));

$tb_url = $trackback_url;

를 $blog_name = get_option(’blogname’);이 두부분으로 나뉘어 수정되는것 주의하며 아래와 같이 바꾼다

function trackback($trackback_url, $title, $excerpt, $ID) {
global $wpdb, $wp_version;
if ( empty($trackback_url) )
return;
$blog_name = get_option(’blogname’);
if ( $trackback_url[0] == ‘!’ ) {
$trackback_url = substr($trackback_url, 1);
if ( function_exists(’mb_convert_encoding’) ) {
$title = mb_convert_encoding($title, ‘EUC-KR’, ‘UTF-8′);
$excerpt = mb_convert_encoding($excerpt, ‘EUC-KR’, ‘UTF-8′);
$blog_name = mb_convert_encoding($blog_name, ‘EUC-KR’, ‘UTF-8′);
} elseif ( function_exists(’iconv’) ) {
$title = iconv(’UTF-8′, ‘EUC-KR’, $title);
$excerpt = iconv(’UTF-8′, ‘EUC-KR’, $excerpt);
$blog_name = iconv(’UTF-8′, ‘EUC-KR’, $blog_name);
}
}

$title = urlencode($title);
$excerpt = urlencode($excerpt);
$blog_name = urlencode($blog_name);
$tb_url = $trackback_url;

21 Responses to “워드프레스 2.x.x 트래백핑 인코딩 문제 해결”

  1. 입명이 Says:

    웰컴 백~ :D

    아 업글을 해야하나 ㅠ.ㅠ

  2. she Says:

    감사합니다. ^^

  3. astraea Says:

    고맙습니다
    2.1 은 섣불리 못 하고 기다리고 있었는데
    확실히 많이 달라졌다는걸 느끼게되네요;

  4. 바람 Says:

    2.1의 경우 지금의 디비는 mySQL 버전이 안맞아서 업그레이드 못하고 있습니다
    호스팅 업체에서 UTF-8 디비를 따로 제공해 주고 있기는 해서 2.1을 새로 깔아봤는데 더 깔끔해진 느낌이더군요..
    그나저나 호스팅도 기간 다되서 이번에 그냥 호스팅을 옮길지 그냥 디비만 옮겨서 사용할지 고민중입니다
    그리고 모두들 반가워요^^

  5. 무시못할석2의 블로그 Says:

    [WP] 워드프레스 1.5.x , 2.0.x 에서 2.1로 업그레이드하기…

    어제(2007년 2월 9일) WordPress Version 2.1 “Ella”로 업그레이드를 했습니다. 업그레이드를 하면서 Wordpress Codex의 UPGRAGDING WORDPRESS를 한글화 해 봤습니다. 2007년 2월 9일 Wordpress Codex의 UPGRAGDING W…

  6. 몰스킨 Says:

    좋은 패치에 감사드립니다. 이번에 2.1.3으로 업그레이드하려는데,
    위의 2.1.0 용 패치를 그대로 적용해도 되는지 알고싶습니다.
    좋은 하루되세요.

  7. 바람 Says:

    요즘 좀 바빠서 2.1.3이 나온지도 몰랐네요^^
    2.1.3용 패치를 업로드 했습니다

  8. 세이군 Says:

    워드프레스가 2.2를 발표하였습니다.
    2.2로 올리신 분은 본문에 있는 파일을 다운로드하지 마시고 이후에 올라오는 2.2용 파일을 설치하시기 바랍니다. 2.2에 2.1 파일을 설치하시면 문제가 발생할 수 있습니다.

  9. 바람 Says:

    지금에야 확인했습니다. comment.php는 변동없고 wp-trackback.php가 오랜만에 바뀌었군요..
    큰 변동은 없습니다.
    직접 수정하는 방법도 동일하기 때문에 2.1.x용이라는 제목이지만 2.2도 따로 글 작성하지 않고 같이 올립니다

  10. 단순함 Says:

    2.2.1 이 등장하였습니다. comment.php 파일이 변경된듯하여 2.2 버전용을 사용할 수 없습니다. 시간되시면 업데이트 부탁드리고 싶습니다. 감사합니다. 게다가 2.2.1 이 그냥 마이너 업글이 아니라 시큐리티픽스를 포함한다길래 더욱… :-)

  11. NPCZ.NET Says:

    워드프레스 2.2.1 업그레이드…

    올라왔길래 업그레이드 해 버렸습니다. 크게 바뀐 점은 없는 것 같고, 여전히 한글 관련 UTF-8 설정을 해 줘야하므로 업그레이드 하실 분들은 Wind-like Blog와 Wordpress KOREAN 포럼을 참고하시면 됩…..

  12. 세이군 Says:

    워드프레스 2.2.2하고 2.0.11이 등장했습니다.
    새 버전 적용하신분은 이 포스트에서 수동 적용부분을 이용하세요.
    파일 다운로드하시면 안됩니다.

  13. 바람 Says:

    알려주셔서 감사합니다
    2.2.2용 수정해서 올렸습니다^^

  14. she Says:

    감사합니다~ 홈이 예뻐졌네요^^

  15. 바람 Says:

    테마를 바꾸었어요
    전에는 직접 만든 테마였는데 T.T
    아무튼 지금이 블로그와 더 잘 맞는거 같아요^^

  16. jaehong Says:

    덕분에, 트랙백핑 인코딩 문제를 해결했습니다. 유익한 정보를 편리하고 쉽게 얻을 수 있었습니다. 고맙습니다. ^^ 새해 좋은 일들이 함께하기를 바랍니다.

  17. 바람 Says:

    재홍님도 좋은일 가득하길^^

  18. ethar Says:

    새해 복 많이 받으세요 :)

  19. 바람 Says:

    찾아갔더니 방명록이 없네요^^
    ethar님도 새해 복 많이 받으세요

  20. ZZiRACi Says:

    워드프레스 2.6버전으로 새로 블로그를 구축하는데 도움이 되었습니다.
    감사합니다.~~

  21. 바람 Says:

    도움이 되었다니 다행입니다.
    다시 업그레이드를 하신다면 영팔님의 플러그인을 사용하는 것이 훨씬 편할 듯 합니다.
    즐거운 블로깅 하세요^^

Leave a Reply