UTF-8 버전에서 네이버로 트랙백시 글자깨짐 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

UTF-8 버전에서 네이버로 트랙백시 글자깨짐 정보

UTF-8 버전에서 네이버로 트랙백시 글자깨짐

본문

UTF-8버전으로 사용하고 있습니다.
PHP는 4.4.1 버전입니다.
 
트랙백을 네이버 블로그로 보내니
글자까 깨져서 나옵니다.
 
해결 방법은 없는 것인가요?
  • 복사

댓글 전체

네이버에서 UTF-8 인코딩으로 넘어온 데이타는 지원이 안되는 현상이라면

iconv() 함수를 이용하여 인코딩을 변환시킨후 트랙백을 보내야 할듯 합니다.

iconv("내용", "원래문자셋" , "바꿀문자셋");


$트랙백보낼내용 = iconv($트랙백보낼내용, "UTF-8" , "EUC-KR");
bbs/write_update.php 의 하단에 아래의 코드가 나옵니다.

// 트랙백 주소가 있다면
if (($w != "u" && $wr_trackback) || ($w=="u" && $wr_trackback && $re_trackback))
{
    $trackback_url = "$g4[url]/$g4[bbs]/tb.php/$bo_table/$wr_id";
    $msg = "";
    $msg = send_trackback($wr_trackback, $trackback_url, $wr_subject, $board[bo_subject], $_POST[wr_content]);
    if ($msg)
        echo "<script language='JavaScript'>alert('$msg $wr_trackback');</script>";
}


위의 코드를 아래처럼 해보세요.

참고로 제가 테스트해볼 여건이 안되어 테스트를 못하며 단순히 생각나는 것을 적은 것이므로 참고 하세요.^^


// 트랙백 주소가 있다면
if (($w != "u" && $wr_trackback) || ($w=="u" && $wr_trackback && $re_trackback))
{
$trakwr_content = iconv($_POST[wr_content], "UTF-8" , "EUC-KR");
    $trackback_url = "$g4[url]/$g4[bbs]/tb.php/$bo_table/$wr_id";
    $msg = "";
    $msg = send_trackback($wr_trackback, $trackback_url, $wr_subject, $board[bo_subject], $trakwr_content);
    if ($msg)
        echo "<script language='JavaScript'>alert('$msg $wr_trackback');</script>";
}
순서가 바뀐듯 합니다.ㅠㅠ 테스트 해볼 여건이 안되어 저두 답답 하네요.

아래처럼 해보세요.

// 트랙백 주소가 있다면
if (($w != "u" && $wr_trackback) || ($w=="u" && $wr_trackback && $re_trackback))
{
$trakwr_content = iconv("UTF-8", "EUC-KR", $_POST[wr_content]);
    $trackback_url = "$g4[url]/$g4[bbs]/tb.php/$bo_table/$wr_id";
    $msg = "";
    $msg = send_trackback($wr_trackback, $trackback_url, $wr_subject, $board[bo_subject], $trakwr_content);
    if ($msg)
        echo "<script language='JavaScript'>alert('$msg $wr_trackback');</script>";
}
제목,게시판이름,내용 을 모두 적용하면 아래처럼 되는데 잘되런지는 모르겠네요.ㅎㅎ

// 트랙백 주소가 있다면
if (($w != "u" && $wr_trackback) || ($w=="u" && $wr_trackback && $re_trackback))
{
$trakwr_content = iconv("UTF-8", "EUC-KR", $_POST[wr_content]);
$trakwr_contents = iconv("UTF-8", "EUC-KR", $wr_subject);
$trakwr_contentm = iconv("UTF-8", "EUC-KR", $board[bo_subject]);
    $trackback_url = "$g4[url]/$g4[bbs]/tb.php/$bo_table/$wr_id";
    $msg = "";
    $msg = send_trackback($wr_trackback, $trackback_url, $trakwr_contents, $trakwr_contentm, $trakwr_content);
    if ($msg)
        echo "<script language='JavaScript'>alert('$msg $wr_trackback');</script>";
}
지금처럼하시면 kr은 제데로간다 해도 문자셋이다른페이지는 어떻게.....

제생각엔 send_trackback이 함수를 수정해야 될것 같습니다

parse_url(); 이함수를 사용해서 전송할 웹페이지의 헤더 정보를 얻어서

즉 그 웹페이지 문자셋을 알아온 후 (정규편현을쓰면 알아올거예요)

알아온게 
out_charset = euc-kr; 라면

string str = $wr_subject; 기타등등

 iconv ( string in_charset, string out_charset, string str) 이므로


$out = iconv(그누_charset, out_charset .'//TRANSLIT', string str) ;

이 $out을 센드 하면될거 같군요.

제가 utf-8을 안쓰니 .....

이거는 역쉬 관리자님의 몫인것 같습니다.

임의로 고쳤다가는 업 할 때 귀찬게 될거 같군요....

실질적인 도움이못되서.... 용서하셔요

그나저나 네이버는 언제 ?

utf-8에서  euc-kr로 바뀌었네요.

고맙습니다.
헐랭이님의 방법으로 수정했더니
네이버로 보내는 것은 문제가 해결되었습니다.

그런데 같은 UTF-8의 게시판으로 트랙백을 보내면
URL만 나오는 문제가 있습니다.

김장군님의 말처럼 관리자님께서 해결해야 하는 문제인가 봅니다.
지금 알게 된 것인데요, 트랙백 받는 것에 문제가 있습니다.
일단 헐랭이님의 방법은 UTF-8을 EUC-KR로 변환해서 전송하는 것입니다.
이러면 네이버등 EUC-KR방식을 사용하는 곳에는 제대로 가죠.

UTF-8을 사용하는 곳이라면 김장군님의 방법처럼 상대방 헤더를 읽어서 선택적으로 하는 방법으로 할 수도 있겠죠.

그런데 문제는 제 홈페이지에 있습니다.

네이버 블로그에서 제 게시글로 트랙백을 보내니, URL만 보입니다.

내가 보내는 것만 신경을 쓰다가 정작 내가 받는 것에도 문제가 있다는 것을 놓쳤습니다.

EUC-KR에서 제 UTF-8로 보내는 것을 어떻게든 또다시 변환해야 할 것 같습니다.
write_update.php 의 트랙백관련 소스중 보내는것과 받는것을 같은소스로 담당하고 있기때문에 그렇습니다 ..

그것을 조건문을 써서 $wr_trackback 과 $re_trackback 를 별도의 소스로 동작하도록 분리해주시면 해결될텐데요...^^
© SIRSOFT
현재 페이지 제일 처음으로