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

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

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

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

Q&A

3回答

6530閲覧

phpで、あるAPIを利用すると「あ」が「\u00E3\u0081\u0082」になり、文字化けする。

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

0グッド

1クリップ

投稿2015/04/27 00:36

編集2015/04/27 01:56

あるAPIを利用し、PHPでウェブサービスを作っています。入力されたユーザー名で外部サービスアカウントを作り、そのサービスをウェブで利用できるようなものです。が、その外部サービスが日本語に対応していないのか、
「あいうえお」
というユーザー名が
「\u00E3\u0081\u0082\u00E3\u0081\u0084\u00E3\u0081\u0086\u00E3\u0081\u0088\u00E3\u0081\u008A」
というユーザー名で登録されていたので、APIでユーザー名を取得、表示すると文字化けします。
どうにかしてPHPで文字化けを起こさないように変換できないでしょうか。
この仕様に気づかず、サービスを開始してしまったため、すでに登録者がおり、会員番号を振ってそれで登録というようなことはできません。

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

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

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

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

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

guest

回答3

0

私はjsonを利用しない方法を示します。

lang

1unicode_encode("\u00E3\u0081\u0082\u00E3\u0081\u0084\u00E3\u0081\u0086\u00E3\u0081\u0088\u00E3\u0081\u008A") //これで変換 2 3 4function unicode_encode($str){ 5 return preg_replace_callback("/\\\\u([0-9a-zA-z]{4})/", "encode_callback", $str); 6} 7 8function encode_callback($matches){ 9 $char = mb_convert_encoding(pack("H*", $matches[1]), "UTF-8", "UTF-16"); 10 return $char; 11}

上記の例はUNICODEの文字列をUTF-8に変換するものになります。

投稿2015/04/27 02:44

orange0190

総合スコア1698

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

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

0

api自身が、unicodeという形で全角文字を半角文字へ置き換えしています。
http://so-zou.jp/web-app/text/encode-decode/
を参照でテストしてみてください。
受け側の方で、変換してみてください。(JSONで受ければ、通常どうり大丈夫かと思います。)

投稿2015/04/27 02:33

wheel_masa

総合スコア7

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

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

0

ユーザー名を

$jsonstr = '{"username":"\u00E3\u0081\u0082\u00E3\u0081\u0084\u00E3\u0081\u0086\u00E3\u0081\u0088\u00E3\u0081\u008A"}'

のようなJSON文字列にして

$decoded = json_decode($jsonstr)

すれば

$decoded->name

で普通の文字列として取り出せるはずなので、それで既存のデータを更新すればいけませんかね

投稿2015/04/27 02:07

khirose

総合スコア251

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問