0

Webアプリケーション内で、次のようなURLへのリクエストを処理しています

    http://example.com/<website-base-url>

リクエストの生のGETパラメーターをuft8データベース列とファイルシステムに記録しています。いくつかの中国のドメインでは、次のような website-base-url パラメータを使用してリクエストを取得します

    %C3%83%C2%A3%C3%82%C2%A5%C3%83%C2%A2%C3%82%C2%A4%C3%83%C2%A2%C3%82%C2%A7%C3%83%C2%A3%C3%82%C2%A5%C3%83%C2%A2%C3%82%C2%A4%C3%83%C2%A2%C3%82%C2%B4%C3%83%C2%A3%C3%82%C2%A8%C3%83%C2%A2%C3%82%C2%B4%C3%83%C2%A2%C3%82%C2%B4.cn 

urldecode を使用したデコードが返される

    ã¥â¤â§ã¥â¤â´ã¨â´â´.cn

これは、ユーザーが要求したいドメイン名ではないようです。

urlencoding、base64、utf8、およびその組み合わせを試しましたが、成功しませんでした。

指定されたパラメーターを utf8 にデコードする方法について何か提案はありますか?

4

1 に答える 1

1

URL パーセンテージ エンコーディングは、生のバイトを単純にエンコードします。テキストの実際のエンコーディングに関するヒントはありません。これらのバイトが表すエンコーディングがわからない場合は、推測するしかありません。

php > $d = urldecode('%C3%83%C2%A3%C3%82%C2%A5%C3%83%C2%A2%C3%82%C2%A4%C3%83%C2%A2%C3%82%C2%A7%C3%83%C2%A3%C3%82%C2%A5%C3%83%C2%A2%C3%82%C2%A4%C3%83%C2%A2%C3%82%C2%B4%C3%83%C2%A3%C3%82%C2%A8%C3%83%C2%A2%C3%82%C2%B4%C3%83%C2%A2%C3%82%C2%B4.cn');

php > echo $d;
ã¥â¤â§ã¥â¤â´ã¨â´â´.cn

php > echo iconv('BIG5', 'UTF-8', $d);

php > echo iconv('Shift-JIS', 'UTF-8', $d);
テδ」テつ・テδ「テつ、テδ「テつァテδ」テつ・テδ「テつ、テδ「テつエテδ」テつィテδ「テつエテδ「テつエ.cn

php > echo iconv('GB18030', 'UTF-8', $d);
脙拢脗楼脙垄脗陇脙垄脗搂脙拢脗楼脙垄脗陇脙垄脗麓脙拢脗篓脙垄脗麓脙垄脗麓.cn

GB18030 が最良の候補のように見えますが、そのデコードされた文字列でさえ、本当に有用な中国語であるには少し繰り返しが多すぎるように見えます。

于 2012-06-05T08:45:04.253 に答える