3

クエリ文字列で音楽のシャープ記号とフラット記号を渡し、utf-8 ブラウザーで表示できるようにする必要があります。表示部分は、シャープ シンボルとフラット シンボルの html エンティティ表現を使用することで簡単になります。

Flat -  ♭
Sharp - ♯

私が困惑したのは、このデータの受け渡しです。

コード記号 B をフラットにしましょう: B♭<br /> HTML エンティティでの表現は次のとおりです。B&#9837;

クライアント
それを渡すには、それを url エンコードします。B%26%239837%3B
次に、それをクエリ文字列にフィードします。?lookup=B%26%239837%3B

サーバー
読む:$r = urldecode($_GET['lookup']);
表示する: echo $r; B を取得するだけ

それで、私は試しました:

読んでください:$r = $_GET['lookup'];
表示してください:echo $r; ただ B を取得してください

また、生のリクエストには B が表示されます。

このタイプの URL エンコードされた html エンティティをクエリ文字列で正しく渡すにはどうすればよいですか?

4

2 に答える 2

2

HTML エンティティの代わりに実際の UTF-8 でエンコードされた文字を使用すると、これはより簡単になります。

B%26%239837%3Bの URL エンコード バージョンですB&#9837;B&#9837;は「B♭」の HTML 実体表現であり、「UTF-8」ではありません。必要なのはB%E2%99%AD、「B♭」の URL エンコードされた UTF-8 表現です。これを行う、UTF-8 でエンコードされた文字列 "B♭" が得られます$_GET['lookup']

すべてを前後に UTF-8 に保つ必要があります。詳細については、「Handling Unicode Front To Back In A Web App 」と、おそらくすべてのプログラマーがテキストを操作するためのエンコーディングと文字セットについて絶対に、積極的に知る必要があることを参照してください。

于 2013-04-27T14:39:48.530 に答える