1

URL からコンテンツをロードしています。URL の形式は www.example.com/?keyword=something です。次のように、ユーザーのキーワードに基づいて特定のコンテンツを取得します。

$url = 'www.example.com/?';
$url = $url."keyword=$something";

function getData ($url) {

    $data = file_get_contents($url);

    return $data;
}

元のデータには、Ö や Å などのスカンジナビア文字が含まれています。ロード後、これらの文字はもはや読めなくなります。この特殊文字の問題を解決するにはどうすればよいですか?

アップデート:

このようにコードを変更しました:

function getData ($url) {

   $data = urlencode(file_get_contents($url));
   $data = urldecode($data);

    return $data;
}

どちらも助けにはなりませんでした。また $data = utf8_decode(urldecode($data));echo utf8_decode(urldecode(getData($keyword)));助けないでください。私はここで間違って何をしていますか?

4

3 に答える 3

3

file_get_contents文字セットに対応していません。提供された正確なバイトを返します。これは、URL が UTF-8 を返し、それを iso-8859-1 として表示すると、問題が発生することを意味します。これはおそらくその通りです(しかし、逆の場合もあります)。ISO-8859-1 に変換するか、UTF-8 を使用するようにアプリを変更してください。前者はおそらく最も単純な変更ですutf8_decode。UTF-8 から ISO-8859-1 に変換する を介してコンテンツをパイプします。

例えば:

function getData ($url) {
    $data = file_get_contents($url);
    $data = utf8_decode($data);
    return $data;
}
于 2013-01-18T15:48:39.787 に答える
1

でテキストを適切なエンコーディングに変換する必要がありますmb_convert_encoding

$data = mb_convert_encoding($data, 'UTF-8', mb_detect_encoding($data));

別のエンコーディングを使用している場合は、それを に置き換えて'UTF-8'ください。

于 2013-01-18T15:42:59.527 に答える
0

urlencode(get を介してデータを渡す前に) and urldecode(以前にエンコードされた文字列をデコードするため) を使用します。

http://php.net/manual/en/function.urlencode.php および http://php.net/manual/en/function.urldecode.php

PS: ファイルとディレクトリには、ウムラウトや特殊文字を含めないでください。

于 2013-01-18T15:24:08.033 に答える