- ベストアンサー
PHPとjavascriptで共通なエンコード方法
- PHPとjavascriptで共通なエンコード方法を探しています。
- PHPからjavascriptにバイナリデータを受け渡す方法を相談したいです。
- PHPのbase64_encodeとjavascriptのbase64エンコードが一般的に異なる方式を使用しているのでしょうか。共通なエンコード方式を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
…とりあえず質問に直接答えます。 >・PHPのbase64_encodeとjavascriptのbase64エンコードは >一般的に方式が違うのでしょうか。 一般も何もありません。Base64はこの世で一つです。言語の違いは関係なく、どの言語でも必ず同じ結果になります。 あなたは期待する結果にならない原因を言語の違いに求めようとしているようですがその可能性はまずありません。あなたのプログラムに間違いがあるのでしょう。その前提で何度も見直しましょう。 どうしても自分では見つけられないという場合には、ソースコードを張りましょう。そしてどのようなデータでうまく行かないのかを明示しましょう。 ※個人的には、「バイナリデータ」と言っているのが実はマルチバイトの文字列の事で、サーバ側とクライアント側で文字コードが違ってしまっているだけという初歩的なミスである可能性が高いのではないかと推測します。
その他の回答 (2)
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
「PHPの結果とJavaScriptの結果が異なる」というのはJavaScriptが間違っているという事ではありません。 PHPの動作が期待通りでなくても、同様にPHPとJavaScriptで異なる結果になります。 2カ所での動作が違うという事は、どこかに設計ミスや作成にミスがあるからです。
お礼
2度目の回答をいただいて、ありがとうございました。 設計ミスや作成にミスがあるのではということでしたので 処理を調べている内に新たな疑問が出てきました。 新しく質問をしなおしましたので、よろしければ見て いただけますか。 http://oshiete.goo.ne.jp/qa/8517290.html
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
私もバイナリデータのBASE64変換は高度なJavaScript技集のライブラリを使わせてもらっています。 いくつかライブラリがありますが、私が調べた中では、唯一バイナリデータに対応していましたので。 本当にデコードが原因ですか? データが破損する可能性は何カ所かあります。 それら全てをチェックして、破損していないことを確認してください。 ・PHPのデータ入力時(ファイル読み込みなど) ・PHPのエンコード時 ・PHPからの送信時 ・PHPの確認用データ保存時 ・JavaScriptの受信時 ・JavaScriptのデコード時 ・JavaScriptの出力時(画面描画など) データが破損する可能性がある箇所はおそらくもっとあると思いますが、 1カ所でも破損が確認できれば、それが原因です。
お礼
回答ありがとうございます。
補足
データが破損している可能性が何箇所かであるということですが、 それぞれの処理結果を出力して確認しデコード部分でデータの 不一致が起こっていることがわかっています。 そのためPHPとjavascriptのエンコード・デコードの処理に ついて質問しています。 よろしくお願いします。
お礼
言語によるBase64の違いはないということでしたので もう一度処理を見直してみたいと思います。 ありがとうございました。
補足
回答を参考にして、いろいろ試している中で新たな 疑問が出てきました。新しく質問をしなおしたの ですが、今度はテスト用のソースも入れていますので、 よろしければ見ていただけますか。 http://oshiete.goo.ne.jp/qa/8517290.html