前提・実現したいこと
ある値をもとにDBに参照してデータを取得したいのですが、
取得したデータが文字化けして表示されます。
「ユニコード」で戻って来るようですが「UTF-8」で戻ってくる方法が分かりません。
PHPにお詳しい方、ご教示頂たく存じます。
宜しくお願い致します。
データベース(テーブル名:m_test)
nameid,name, 001,東京 002,大阪
■詳細につきまして
PHPとPostgreSQLにて、取得した「001」を元に、
DBより「東京」を取得したいのですが、
「\U6771\U4eac 」と返ってきます。
ユニコードの東京という漢字みたいですが、
「\U6771\U4eac 」ではなく「東京」を取得したいです。
コード(DatabaseClass.php)
<?php //内部文字コードを変更 mb_language("uni"); mb_internal_encoding("utf-8"); mb_http_input("auto"); mb_http_output("utf-8"); class Database{ var $dbServer; var $dbName; var $dbUser; var $dbPass; var $link; var $db; var $query; //DB接続 function __construct($db_name) { //DBの情報 $this->dbServer="localhost"; $this->dbName=$db_name; $this->dbUser="test"; $this->dbPass="test"; //ポスグレに接続 $this->link=pg_connect("host={$this->dbServer} dbname={$this->dbName} user={$this->dbUser} password={$this->dbPass}") or die(exit); //UTF-8の文字コードに変更 $this->query=pg_query($this->link,'SET NAMES utf8'); } //DBを閉じる public function close() { return pg_close($this->link); } //読み込むテーブルの選択 public function select($query) { $result=pg_query($query); $row=array(); $row=pg_fetch_assoc($result); return $row; } //指定したクエリの実行 public function query($query) { return pg_query($this->link,$query); } //JSON形式に変換用の出力 public function jsonparse($query) { $row = pg_fetch_object($query); return $row; } } ?>
コード(get.php)
<?php //DatabaseClassを読み込み include_once "DatabaseClass.php"; //テーブル名が選択されているかどうか確認 if($_POST["table_name"] ) { //DB名設定 $db_name = "test"; $database = new Database($db_name); $table_name = $_POST["table_name"]; $sql = ("SELECT * from m_test where nameid = '001' "); //クエリ送信 $query = pg_query($sql); $json= array(); if(strstr($table_name, 'm_test')){ while ($row = $database->jsonparse($query)) { $json[] = array( 'name' => $row->name, ); } } //JSON形式で出力 header("Content-Type: application/json; charset=utf-8"); echo json_encode($json); //DBを閉じる $database->close(); } ?>
補足情報(FW/ツールのバージョンなど)
PostgreSQL:10.4
PHP:5.6
回答1件
あなたの回答
tips
プレビュー