2016-09-18 2 views
-1

PDO 및 Slim 프레임 워크에 몇 가지 문제가 있습니다. 요점은 내가 utf8 char로 어떻게 바꿀 수 있는지 모른다. 나는 전체 인터넷을 읽고 있었지만 아무것도 나를 위해 일하지 않는다. 내 JSON respone은 "ćśąęł"과 같아야하지만 "\ u0107 \ u015b \ u0105 \ u0119 \ u0142"이고 내 안드로이드 앱에는 "?????"이 표시되어야합니다. 내가 사용하고있는 모든 파일과 프로그램에서 인코딩을 검사했고 utf8로 설정되었습니다.PHP, PDO, SLIM 프레임 워크, JSON 인코딩 UTF8

내 PDO

내가 뭘하려
try{ 
     $pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USERNAME, DB_PASSWORD); 
     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $stmt = $pdo -> query('SELECT id, title, opinion, upload_image FROM upload_post LIMIT '.$offset.',8'); 
     $data = $stmt->fetchAll(PDO::FETCH_ASSOC); 
     $pdo = null; 
     echo json_encode("ćśąęł"); 
    }catch(PDOException $e) 
    { 
     echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage(); 
    } 
    } 

$pdo->exec("set names utf8"); 
array(\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'') 
charset=utf8 in connection string 
$app = new \Slim\Slim();$app->contentType('text/html; charset=utf-8'); in Slim framework, but still nothing 

답변

2

나는 해결책을 발견, 그래서이

$pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8', DB_USERNAME, DB_PASSWORD); 
같은 캐릭터 세트 =에게 UTF8를 추가 연결 문자열에서 저 위해 노력하고 있습니다

및 Json 인코딩에서 "JSON_UNESCAPED_UNICODE"< 추가 -이 방법으로 작동)

를 5.3 여기에 예를

echo json_encode($data, JSON_UNESCAPED_UNICODE); 

내 모든 PDO

try{ 
     $pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8', DB_USERNAME, DB_PASSWORD); 
     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $stmt = $pdo -> query('SELECT id, title, opinion, upload_image FROM upload_post LIMIT '.$offset.',8'); 
     $data = $stmt->fetchAll(PDO::FETCH_ASSOC); 
     $pdo = null; 
     echo json_encode($data, JSON_UNESCAPED_UNICODE); 
    }catch(PDOException $e) 
    { 
     echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage(); 
    } 

행운 위의 PHP는