2016-09-18 1 views
-1

Haben Sie Probleme mit PDO und Slim-Framework. Punkt ist, ich weiß nicht, wie ich zu utf8 Charakter ändern kann. Ich habe das ganze Internet gelesen, aber nichts funktioniert für mich. Mein JSON Respone sollte wie "ćśąęł" aussehen, ist aber "\ u0107 \ u015b \ u0105 \ u0119 \ u0142" und in meiner Android App ist "?????" Ich überprüfte die Codierung in allen Dateien und Programmen, die ich benutze, und es ist auf utf8 eingestellt.PHP, PDO, SLIM-Framework, JSON Codierung UTF8

mein 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(); 
    } 
    } 

was

Ich versuchte
$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 

Antwort

2

ich die Lösung gefunden zu haben, so dass diese für mich in Verbindung String arbeitet hinzufügen utf8 charset = wie

$pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8', DB_USERNAME, DB_PASSWORD); 

und in Json encode add "JSON_UNESCAPED_UNICODE" < - diese Methode funktioniert in php oben 5.3 Beispiel hier

echo json_encode($data, JSON_UNESCAPED_UNICODE); 

und alle meine gU

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(); 
    } 

Good Luck;)