채택완료

네이버 api 카페 글쓰기 에서 한글이 깨져서 올라갑니다. 해결 방법좀 알려주세요.

2017-02-16 (목) 15:53:23 5,058

네이버 api 카페 글쓰기 에서 한글이 깨져서 올라갑니다. 해결 방법좀 알려주세요.

로근인 후 카페에 직접 쓰는 페이지 소스 올려봅니다.

<?php
include('./_common.php');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php

$client_id = G5_NAVER_OAUTH_CLIENT_ID; // 오픈 API 키 발급받은 client ID
$client_secret = G5_NAVER_OAUTH_SECRET_KEY; // 오픈 API 키 발급받은 client secrete
$authorize_url = 'https://nid.naver.com/oauth2.0/authorize';
$access_token_url = 'https://nid.naver.com/oauth2.0/token';

// 오픈 API 키 등록 시 입력한 callback 주소, tutorial에서는 "도메인주소/callback.php".
$callback_uri = 'http://www.formebnm.co.kr/plugin/naver/callback.php?service=naverc';
$index_uri = 'http://www.formebnm.co.kr/plugin/naver/blog_write.php'; // tutorial에서는 "도메인주소/index.php"

$cafe_id = "xxxxxxxxxx";
$board_id = "x";

function generate_state(){
 $mt = microtime();
 $rand = mt_rand();
 return md5($mt . $rand);
}

$bo_table = get_session('nb_bo_table');
$wr_id = get_session('nb_wr_id');

if($_SESSION['access_token']) {
 header("Content-Type: text/html; charset=UTF-8");
 $bo_table = get_session('nb_bo_table');
 $wr_id = get_session('nb_wr_id');
 
 $sql = "select * from ".$g5['write_prefix'].$bo_table." where wr_id = ".$wr_id."";
 $row = sql_fetch($sql);

 $subject = $row['wr_subject'];
 $content = $row['wr_content'];
 
 $token = $_SESSION['access_token']; // 네이버 로그인 API호출로 받은 접근 토큰값
 
 $header = "Bearer ".$token; // Bearer 다음에 공백 추가
 $clubid = $cafe_id;// 카페의 고유 ID값
 $menuid = $board_id; // 카페 게시판 id
 
 $url = "https://openapi.naver.com/v1/cafe/".$clubid."/menu/".$menuid."/articles";
 
  
 $postvars = array(
  'subject' => urlencode($subject),
  'content' => urlencode($content)
 );

 $postvars_string = "";

 foreach($postvars as $key => $value) {
  $postvars_string .= $key. "=". $value. "&";
 }
 $postvars_string = rtrim($postvars_string, '&');

 $is_post = true;
 
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_POST, count($postvars));
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch,CURLOPT_POSTFIELDS, $postvars_string);
 $headers[] = "Authorization: ".$header;
 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
 $response = curl_exec ($ch);
 $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
 curl_close ($ch);
 
 if($status_code == 200) {
  alert_close('정상적으로 게시 되었습니다.');
 } else {
  echo "Error 내용:".$response;
  exit;
 }
}
?>
</body>
</html>

답변 3개

채택된 답변
+20 포인트
2017-06-07 (수) 21:33:40
Copy
$postvars = array(  'subject' => urlencode(urlencode($subject)),  'content' => urlencode(urlencode($content)) );

로 하시면됩니다.

저도 해결하고 나서 어이가 없네요 ㅎㅎㅎ.......

전체 다시 저장 해 봐도 변동이 없네요.. ㅠㅠ 답변 감사합니다. 

해당 php 파일을 전문에디터로 열어서 인코딩을 utf-8 로 다시 저장하여 사용해 보세요. 

답변을 작성하려면 로그인이 필요합니다.