人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpMyAdminで「JSONエクスポート」した際のエスケープ(?)について

DBに、
$connect->query(''SET NAMES utf8'')

として格納している文字列データを、「JSONエクスポート」すると、
$connect->query(\'SET NAMES utf8\')

となってしまい、JSONを処理する際、エラーになります。

どうして「''」は「\'」へ変換されるのでしょうか?
また、これを回避するには、どうすればいいでしょうか?

phpMyAdmin
バージョン: 3.5.0

●質問者: プログラムができない
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● うぃんど
ベストアンサー

質問文ではシングルクォーテーションを2個続けて書いてますが、
phpの文法的におかしいのでダブルクォーテーションに読み替えて回答を書きます。


JSONのデータはダブルクォーテーションで囲みますので、
データ内にダブルクォーテーションがあると、
区切る場所がおかしくなって正常なデータとして扱えなくなります。

おかしくなった例

"$connect->query("SET NAMES utf8")" は
"$connect->query(" が一つのデータとして扱われ、
続くSの時点でエラーとなってしまいます。

変なところで区切られてしまうことを回避(エスケープ)するために、
半角の¥マーク(英文だとバックスラッシュになります)をつけます。

"$connect->query(\"SET NAMES utf8\")"

これは仕様なので回避する方法はありません。

JSONデータをインポートするソフトは、
自動的にエスケープを削除したりしてくれるはずですが、
自分でプログラムを書いて読み込ませてる場合には、
エスケープ文字(半角の¥)を削除しないといけないかもしれません。


プログラムができないさんのコメント
回答ありがとございます。 説明、大変詳しくて分かりやすかったです。 >自分でプログラムを書いて読み込ませてる場合には、 >エスケープ文字(半角の¥)を削除しないといけないかもしれません。 この方法を試すか、あるいは、別の方法(phpMyAdmin以外)でのJSON変換を検討してみようと思います。 色々参考になりましたー

うぃんどさんのコメント
>別の方法(phpMyAdmin以外)でのJSON変換 phpMyAdminの仕様ではなくてJSONの仕様なので、 別の方法を使ってもJSON形式で出力する場合には同じことになりますよ。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ