web-dev-qa-db-ja.com

JavascriptおよびPHPデータのエンコード/デコード方法

データをどの暗号化でエンコードする必要があるか、またその理由を知りたいのですが。まず、ウェブサイト内の検索エンジンであるため、GETメソッドを使用します。次に、RTL言語(ヘブライ語)を使用します。そして、3番目は基本的にこの質問をする理由です-FirefoxとSafari(私が理解しているように)はURLを自動的にエンコードおよびデコードします。そのため、URLをエンコードすると、Firefoxでデコードされたことがわかります。しかし、URLをアドレスバーにコピーアンドペーストしてからサイトに入ると、Firefoxはコード化されていないURLをUTFにエンコードします(私は思う)。

どのen/decodeを使用すればよいですか?そして、どうすればFirefoxの自動エンコード/デコードを克服できますか?

1
Ron

あなたが何を求めているのか正確にはわかりません。暗号化、コンテンツエンコード、およびURLエンコードの概念が混乱しているようです。

これは暗号化とは関係ないと思います。コンテンツのエンコードに関して、最新のブラウザー(IE 6でも)はUnicodeを処理します。 PHPファイルがUTF-8またはUTF-16としてエンコードされている限り、任意のヘブライ語のコードポイントを使用できます。ほとんどのWebサーバーは、PHPを提供するときにソースファイルのエンコーディングを調べ、提供するページのコンテンツタイプでそれを使用しますが、安全にしたい場合は、明示的にPHP HTTPヘッダーをエンコードするコンテンツを送信します。

<?php header("Content-Type: text/html; charset=UTF-16"); ?>

URLに関する限り、すべてのURLをURLエンコードする必要があります。ブラウザーがアドレスバーに表示する方法を心配する必要はありません。通常、ブラウザは入力されたアドレスの無効な文字をURLエンコードします(FirefoxがアドレスバーのURLをデコードしても、別のブラウザに貼り付けても機能します)。

1
Jacob

最新のブラウザは、ロケーションバーに表示される前にURLを自動的にデコードしますが、リソースとドメインへのパスに2つの異なるエンコードを含む実際のアドレスを内部的に使用しています。

ブラウザから場所をコピーすると、他のアプリケーションに貼り付けたときにWebアドレスとして機能することを確認する目的で、元のアドレスがコピーされます。

1
Tomer Cohen

あなたは多くのものを混ぜています。しかし、あなたの質問に答えるには、常に非ASCII /特殊文字をURLにエンコードすることをお勧めしますので、それを続けてください。しかし、ブラウザがアドレスバーでURLを処理する方法について、あなたができることは何もありません。

0
DanMan