Home 게시판 커뮤니티 Q&A 테마설정시 한글코멘트 깨어지는 현상에 대한 질문드립니다.

8개 답변, 2 voices Last updated by Avatar of suakiisuakii 17 years, 4 months 전
  • Avatar of suakiisuakii
    Participant
    @suakii
    #2393

    안녕하세요. 워드 테마를 andyblue-ver-1.3를 적용하여 사용중에 있습니다.
    제 홈피 주소는 "http://suakii.byus.net"이구요.
    문제는 글에 코멘트를 달고 submit을 누른후에는 제대로 입력이 되는것 같아 보입니다만
    새로고침을 해보면 코멘트가 깨어져서 보입니다. 테마 파일의 "comments.php"의 아래
    라인에서 Ajax관련해서 charset에러같은데 잘 모르겠습니다.
    현재 로그설정은 "euc-kr"을 사용하고있답니다.
    그래서 아래의 comments.php파일의 빨간색 부분을 삭제하고서 다시 적용을 하면
    코멘트가 깨어지지는 않는데 근본적인 해결책이 어떻게 되어야 할지 질문 드립니다.

    <form id="commentform" action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" [color=red] onsubmit="new Ajax.Updater({success: 'commentlist'}, '<?php bloginfo('stylesheet_directory') ?>/comments-ajax.php', {asynchronous: true, evalScripts: true, insertion: Insertion.Bottom, onComplete: function(request){complete(request)}, onFailure: function(request){failure(request)}, onLoading: function(request){loading()}, parameters: Form.serialize(this)}); return false;">

    Avatar of 082net082net
    Keymaster
    @082net
    #2394

    제가 EUC-KR 로 블로그를 운영해 보지 않아 확실한 답변은 힘들군요.

    우선 임시로 EUC-KR로 설정을 바꾼 뒤 테스트 해 보니, 일반적으로 댓글을 등록할때는 EUC-KR로 잘 입력이 되나, ajax를 이용할 때 UTF-8로 인코딩이 변형되는걸 확인했습니다.

    제가 보기에 원인은 javascript 로 ajax를 요청할 때 자연스럽게 인코딩이 변환되는듯 하군요.

    권장해 드리고 싶은 해결법은 블로그를 UTF-8로 운영하는것이고,

    현재 상태에서의 임시 해결책은…..

    comment-ajax.php파일의 윗부분에서 foreach 부분에 아래와 같이 인코딩을 변경하는 라인을 추가하는 것입니다.

    foreach($_POST as $k=>$v) {
       $_POST[$k] = urldecode($v);
       if(function_exists('mb_convert_encoding')
          $_POST[$k] = mb_convert_encoding($v, get_settings('blog_charset'), 'ASCII, UTF-8, EUC-KR, ISO-8859-1');

    }

    아니면 현재 사용하시는것 처럼 ajax-comment 기능을 사용하지 않는것입니다.

    참, 그리고 위의 방법은 mb_convert_encoding 함수를 서버(PHP)에서 지원해야만 사용 가능합니다.

    Avatar of 082net
    Facebook 사용자 모임 그룹 도 함께 운영되고 있으며, 격 주로 미트업과 스터디를 진행하고 있으니 관심 있으신 분들의 많은 참여 바랍니다 🙂
    Avatar of 082net082net
    Keymaster
    @082net
    #2398

    제가 EUC-KR 로 블로그를 운영해 보지 않아 확실한 답변은 힘들군요.

    우선 임시로 EUC-KR로 설정을 바꾼 뒤 테스트 해 보니, 일반적으로 댓글을 등록할때는 EUC-KR로 잘 입력이 되나, ajax를 이용할 때 UTF-8로 인코딩이 변형되는걸 확인했습니다.

    제가 보기에 원인은 javascript 로 ajax를 요청할 때 자연스럽게 인코딩이 변환되는듯 하군요.

    권장해 드리고 싶은 해결법은 블로그를 UTF-8로 운영하는것이고,

    현재 상태에서의 임시 해결책은…..

    comment-ajax.php파일의 윗부분에서 foreach 부분에 아래와 같이 인코딩을 변경하는 라인을 추가하는 것입니다.

    foreach($_POST as $k=>$v) {
       $_POST[$k] = urldecode($v);
       if(function_exists('mb_convert_encoding')
          $_POST[$k] = mb_convert_encoding($v, get_settings('blog_charset'), 'ASCII, UTF-8, EUC-KR, ISO-8859-1');

    }

    아니면 현재 사용하시는것 처럼 ajax-comment 기능을 사용하지 않는것입니다.

    참, 그리고 위의 방법은 mb_convert_encoding 함수를 서버(PHP)에서 지원해야만 사용 가능합니다.

    Avatar of 082net
    Facebook 사용자 모임 그룹 도 함께 운영되고 있으며, 격 주로 미트업과 스터디를 진행하고 있으니 관심 있으신 분들의 많은 참여 바랍니다 🙂
    Avatar of suakiisuakii
    Participant
    @suakii
    #2395

    안녕하세요. 답변주신대로 하니까 일단
    인코딩 관련해서는 해결이 된것같아요.
    제 홈페이지의 디비환경이 euc-kr이고 당분간 바꾸기는 어렵다는
    답변이 일단 있어서.
    일단 지금 코멘트는 제대로 보이는데요. 문제는 코멘트 작성후
    submit을 눌렀을때 Ajax가 뿌려주는 입력 코멘트 내용이 이번에는
    깨어져서 보이네요. 물론 페이지를 리로딩하면 제대로 된 입력이 보이지만
    말입니다. 또 어디서 문제가 발생했는지 잘 모르겠습니다.
    테마의 js밑의 각종 파일들에서 문제가 발생하는지 ..
    다시한번만 생각해주시기 바랍니다.
    맨날 질문만 드리네요.^^

    Avatar of suakiisuakii
    Participant
    @suakii
    #2399

    안녕하세요. 답변주신대로 하니까 일단
    인코딩 관련해서는 해결이 된것같아요.
    제 홈페이지의 디비환경이 euc-kr이고 당분간 바꾸기는 어렵다는
    답변이 일단 있어서.
    일단 지금 코멘트는 제대로 보이는데요. 문제는 코멘트 작성후
    submit을 눌렀을때 Ajax가 뿌려주는 입력 코멘트 내용이 이번에는
    깨어져서 보이네요. 물론 페이지를 리로딩하면 제대로 된 입력이 보이지만
    말입니다. 또 어디서 문제가 발생했는지 잘 모르겠습니다.
    테마의 js밑의 각종 파일들에서 문제가 발생하는지 ..
    다시한번만 생각해주시기 바랍니다.
    맨날 질문만 드리네요.^^

    Avatar of 082net082net
    Keymaster
    @082net
    #2396

    안그래도 그부분을 설명할까 하다가 그냥 지나쳤었네요.

    commnet-ajax.php 파일의 맨 아랬쪽에 아래와 같이 한줄을 추가하면 그 부분도 해결될거에요.


    @header('Content-type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset'));
    echo "<li style=""".$matches[1].">".$matches[2]."</li>";

    Avatar of 082net
    Facebook 사용자 모임 그룹 도 함께 운영되고 있으며, 격 주로 미트업과 스터디를 진행하고 있으니 관심 있으신 분들의 많은 참여 바랍니다 🙂
    Avatar of 082net082net
    Keymaster
    @082net
    #2400

    안그래도 그부분을 설명할까 하다가 그냥 지나쳤었네요.

    commnet-ajax.php 파일의 맨 아랬쪽에 아래와 같이 한줄을 추가하면 그 부분도 해결될거에요.


    @header('Content-type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset'));
    echo "<li style=""".$matches[1].">".$matches[2]."</li>";

    Avatar of 082net
    Facebook 사용자 모임 그룹 도 함께 운영되고 있으며, 격 주로 미트업과 스터디를 진행하고 있으니 관심 있으신 분들의 많은 참여 바랍니다 🙂
    Avatar of suakiisuakii
    Participant
    @suakii
    #2397

    전혀 다른 부분을 생각하고 있었네요.
    완젼 php공부를 해야 할꺼 같은데 정말…
    너무 고맙습니다.^^ 082net님의 친절한 답변덕에 해결되었습니다.
    새해복 많이 받으세요.^^

    Avatar of suakiisuakii
    Participant
    @suakii
    #2401

    전혀 다른 부분을 생각하고 있었네요.
    완젼 php공부를 해야 할꺼 같은데 정말…
    너무 고맙습니다.^^ 082net님의 친절한 답변덕에 해결되었습니다.
    새해복 많이 받으세요.^^

9 글 보임 - 1에서 9 까지 (총 9 중에서)
  • 답변은 로그인 후 가능합니다.