我需要能够在查询字符串中传递音乐的升降符号,并在utf-8浏览器中显示。使用html实体表示升降符号可以轻松地进行显示。
Flat - ♭
Sharp - ♯
这些数据的传递让我感到困惑。
我们以B♭和HTML实体表示方法为例:
它的HTML实体表示为:B♭
客户端
为了传递它,我进行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实体?
$r = html_entity_decode($_GET['lookup'], ENT_QUOTES,'UTF-8');
。或者如果您使用utf-8,则不使用HTML实体,而是在文本中使用纯值和url_encoded值(B♭
=>B%E2%99%AD
)。 - Wrikken