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

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

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

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

7914閲覧

【Chrome】リンクをurlencodeしてもアドレスバーに日本語で表示される。

k499778

総合スコア599

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/06/15 10:53

編集2016/06/15 10:56

現在CakePHP3,PHP,ctpを使ってリンクの処理を実装しています。

そのリンクのクエリパラメータの中に「名前」があるのでurlencode()を使ってURLエンコード化しました。

↓ctp

html

1<a href="https://teratail.com/hoge?name=urlencode( <?= &name => )">

しかし、そのリンクを押下するとアドレスバーには日本語表記で表示されてしまいます。
ブラウザは「Chrome」です。「IE」だとアドレスバーにエンコード化されて表示されました。

ソース上のリンク自体はデベロッパーツールでエンコード化されているのを確認済みです。

アドレスバーの「名前」パラメータをエンコードして表示することはできないのでしょうか?
Chromeの仕様の可能性が高いので無理なのでしょうか?

参考:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1223666462

もし難しい、あるいは、かなり作りこむ必要があるといった場合、アドレスバーをそこまでしてエンコード化する必要はあるのでしょうか?

一応上司から『「名前」パラメータはエンコードするように』と軽く言われただけで、上司もそのような事情を知りません。
もしできない、あるいは、かなり作りこむ必要がある場合、「日本語部分」が見えても仕方がないという判断を下してもいいでしょうか?

まだまだ自分では判断しかねるので、もしアドバイスがあれば教えていただきたいです、

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

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

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

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

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

guest

回答2

0

上司に確認をとってみてください。日本語部分を秘密にせよとの意味ではないと思いますよ。
ブラウザの誤作動を防止するためだと思います。
見えて困るのなら、もっときちんと暗号化しなければなりません。

投稿2016/06/15 10:56

Zuishin

総合スコア28656

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

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

k499778

2016/06/15 11:00

回答有り難うございます。 そうですね。確認をとってみます。 やはりアドレスバーにエンコードされて表示されないのは Chromeの仕様ですよね? もしお分かりであれば教えていただけると助かります。
Zuishin

2016/06/15 11:07

わざわざ変更しているわけですから、仕様だと思います。 Chrome はアドレスバーで検索を行うことを推奨していますから、その履歴のためじゃないでしょうか?
k499778

2016/06/15 11:15

返答ありがとうございます。 承知いたしました(^^)
guest

0

自己解決

urlencodeを二重にすることで解決することができました。

phpがわでもurldecodeが必要です。

投稿2016/06/16 03:16

k499778

総合スコア599

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

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

退会済みユーザー

退会済みユーザー

2016/06/16 03:35 編集

2重にした場合の遷移先の挙動は確認されましたか? 通常そのような処理は行いませんので、パラメータが無効となり表示されている内容が意図してないものになっている可能性があります。 仕事で行われてるとのことなので、上司の方が指示された内容が『「名前」パラメータはエンコードするように』でしたらURLバーの表示を変えることが目的ではありません。 urlencodeは(この場合)PHPが受け取る$_GETのデータが文字化けしないように処理するものですよ。 きつい表現になりますが私が上司で2重にurlencodeされていたら頭を抱えてしまいます。
k499778

2016/06/16 12:50 編集

動作確認はもちろんして正常に動くのを確認しました。 urlエンコードに関しては私も同じ認識で、 2バイト文字や制御文字といった紛らわしい文字が入り込むのを防止するためで、ブラウザが認識できる形に変えること。だと思っています。 なので一重のurlエンコードでアドレスバーには日本語が表示されてしまっているが、目的はそこではないのでいいのではないかと提案いたしました。 しかし、アドレスバーに日本語が表示されているのはあまり見たことがないということで、何とかするように頼まれました。 そこで調べた結果以下のサイトに出会い、 http://chickenheartnote.web.fc2.com/menu/program/PHP/MailtoShowURLEncodeString.html 二重にエンコードをする方法でアドレスバーにもエンコード文字を表示し、動きも問題なく動かすことができました。 私自身も気持ち悪いなとは思っていますが、要望もあり、他の方法が見つからないのでこのように対応しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問