質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

8202閲覧

MySQLからJSONで文字を取り出すと文字化けがする

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/04/11 21:50

<php function con(){ $dsn = 'mysql:dbname=DBTest;host=localhost;charaset=utf8'; $user = 'root'; $pass = 'pass'; try { $db = new PDO($dsn,$user,$pass); } catch (PDOException $e){ exit("データベース接続エラー:{$e->getMessage()}"); } return $db; } $db = con(); $stt = $db->prepare('SELECT * FROM swiftTest'); $stt->execute(); $arr = array(); while($row=$stt->fetch(PDO::FETCH_BOTH)){ $arr[]=array( 'myId' => $row['id'], 'myName' => $row['name'], 'myPrice' => $row['price'] ); } echo(json_encode($arr)); ?>

これを実行すると以下のようにnameの値(日本語)が変になってしまいます。

[{"myId":"1","myName":"\u308a\u3093\u3054","myPrice":"300"},{"myId":"2","myName":"\u307f\u304b\u3093","myPrice":"200"},{"myId":"3","myName":"\u30d0\u30ca\u30ca","myPrice":"250"}]

よろしくおねがいします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

PHP5.4以降ならJSON_UNESCAPED_UNICODEが使えます.

php

1echo json_encode($arr, JSON_UNESCAPED_UNICODE);

PHP5.3用バックポートはこちら↓
(もう5.3系とか使うべきじゃないんですが,やむをえない場合はこちらを使ってください)

php

1function raw_json_encode($input, $flags = 0) { 2 $fails = implode('|', array_filter(array( 3 '\\\\', 4 $flags & JSON_HEX_TAG ? 'u003[CE]' : '', 5 $flags & JSON_HEX_AMP ? 'u0026' : '', 6 $flags & JSON_HEX_APOS ? 'u0027' : '', 7 $flags & JSON_HEX_QUOT ? 'u0022' : '', 8 ))); 9 $pattern = "/\\\\(?:(?:$fails)(*SKIP)(*FAIL)|u([0-9a-fA-F]{4}))/"; 10 $callback = function ($m) { 11 return html_entity_decode("&#x$m[1];", ENT_QUOTES, 'UTF-8'); 12 }; 13 return preg_replace_callback($pattern, $callback, json_encode($input, $flags)); 14} 15 16echo raw_json_encode($arr);

投稿2016/04/11 22:53

編集2016/04/12 00:21
mpyw

総合スコア5223

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/04/12 11:16

お二人とも御回答ありがとうございました! 無事に解決しました!
guest

0

http://php.net/manual/ja/function.json-encode.php
http://php.net/manual/ja/json.constants.php

JSON_UNESCAPED_UNICODE (integer)
マルチバイト Unicode 文字をそのままの形式で扱います (デフォルトでは \uXXXX にエスケープします)。 PHP 5.4.0 以降で使用可能です。

と、いうことです。

投稿2016/04/11 22:08

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問