36

PHPのurldecode関数を使用してこのURL文字列をデコードしようとしています。

urldecode("Ant%C3%B4nio+Carlos+Jobim");

これは出力することになっています...

'Antônio Carlos Jobim'

...しかし、代わりにこれを失敗させています

'Antônio Carlos Jobim'

JSベースのオンラインデコーダーで文字列をテストして大成功を収めましたが、この操作サーバー側では実行できないようです。何か案は?

4

6 に答える 6

70

文字列UTF-8でエンコードされています。これは機能します:

echo utf8_decode(urldecode("Ant%C3%B4nio+Carlos+Jobim"));

出力:「アントニオカルロスジョビン」。

于 2009-11-18T15:47:38.023 に答える
14

実際には、目的の出力が得られますが、UTF-8として解釈されません。これがHTTPアプリケーション上にある場合は、クライアントにUTF-8を使用するように指示するヘッダーまたはメタタグ(あるいはその両方)を送信する必要があります。

編集:例:

// replace text/html with the content type you're using
header('Content-Type: text/html; charset=UTF-8');
于 2009-11-18T15:45:18.207 に答える
3

私がする時

<?php
echo urldecode("Ant%C3%B4nio+Carlos+Jobim");
?>

私のブラウザでは次のように正しく表示されます

アントニオカルロスジョビン

XAMPPでテストしました

于 2009-11-18T15:47:49.483 に答える
3

別のオプションは次のとおりです。

<?php
$smthing = 'http%3A%2F%2Fmysite.com';
$smthing = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($smthing)); 
$smthing = html_entity_decode($smthing,null,'UTF-8');
echo $smthing;
?>

出力は次のようになります:http://mysite.com

于 2013-03-26T13:42:22.647 に答える
1

htmlentetiesページにエコーする前にも使用していますか?urldecode("Ant%C3%B4nio+Carlos+Jobim");私があなたのコードをテストしたとき、それはその部分だけでうまくいきました、しかし私がそれを実行したとき、私はhtmlentitiesあなたがしたのと同じ出力を得ました。

UTF-8文字とPHPがhtmlentities関数を処理する方法に問題があるようです。

于 2009-11-18T15:45:48.377 に答える
-1

最初にurldecoder関数「urldecoder()」でデコードしてから、utfデコーダー関数「utf_decoder()」を使用する必要があります

于 2019-01-03T09:33:11.503 に答える