• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:文字コードについて)

PHPでテンプレートに含まれるリンク先のエンコードと表示の不一致について

このQ&Aのポイント
  • 現在、PHP(EUC-JP)でプログラムを作成し、テンプレートはS-JISで表示しています。テンプレートにはリンク先が含まれており、リンク先に日本語の文字が含まれています。しかし、リンクをクリックすると、エンコードされたURLが表示されます。
  • URLの生成において、PHP以下をエンコードし、それをS-JISに変換しています。しかし、リンクをクリックすると、エンコードされたURLが表示されるという現象が起きています。
  • この現象が起こる原因はわかりませんが、エンコードされたURLがアラビア文字のように表示されるという報告があります。なぜこのような現象が起こるのか、ご教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • sisya
  • ベストアンサー率39% (97/244)
回答No.2

テンプレートとはご自身で値を適用するための HTMLソースの事でしたか。 うまく飛ばないとの事でしたが、 いくらgStationNameの値がむちゃくちゃでも test.cgiと言うファイルが存在すれば 404にはならないと思います。 飛び先のURLが正しいかを確認したほうが良いかと思います。 更に補足要求になってしまうのですが、 ・アラビア文字のようなものはどこに表示されるのですか? ・エンコードされたURLはどこに表示されるのですか? #1補足から ・どのような値が入っているのですか? ・URLエンコード無しで現象が変化するか試しましたか?

aiurai54
質問者

お礼

最終的にはうまくいきました。 日本語のところだけをURLエンコードすると 無事に通りました。

その他の回答 (1)

  • sisya
  • ベストアンサー率39% (97/244)
回答No.1

まず、テンプレートを使用していらっしゃるようですが、 どのテンプレートエンジンを使っているか書かれないと 挙動がまったく予測できません。 判らないまま回答しますと、 urlencode関数を通した時点で2バイト文字(日本語)は すべてurlの規則に従って変換されるので、 すべて英数と%に変換されます。 その後mb_convert_encodingを行なっても 何も変化していないと予測されます。 ためしにmb_convert_encoding関数を通さずに URLを見てみてください。

aiurai54
質問者

補足

最初のやり方とは少し違った方法で値の受け渡しを行ったのですが、、、やはりうまくいきません。回答ありがとうございます。 テンプレートエンジンとは?というところから調べなければ、いけませんが、、 私の方法がテンプレートエンジンにあたるとは思うのですが、どのテンプレートエンジンをというと少しわかりません。 現在、HTML(テキストなどに)その挿入したい部分の文字列をstr_replaceで置換しています。これもテンプレートエンジンにあたるのでしょうか? 説明文が間違っていましたが、 DBから取得した値を 下記のようにLocationしています。 $url="test.php?ID=".$stData[$i]['id'].&gStationName=".$stData[$i]['name']; $url_encode=urlencode($url); header("Location: {$rtnUrl}"); 値は入っていますが、 うまくとびません。$stData[$i]['name'];などには日本語が含まれているため、エンコードしています。 エラーの内容としては, HTTP 404 - ファイル未検出 となります。

関連するQ&A

専門家に質問してみよう