2

いろいろ試してみましたが、ユーロ記号を表示できません。cURLを使用してページを解析しています。ページはISO-8859-1でエンコードされています

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

ページにユーロ記号があり、使用するとき

$curl_scraped_page = curl_exec($ch);

中に疑問符が付いた黒いダイヤモンドが表示されます。

このサイトで関連する質問と回答をたくさん見ましたが、実際には機能しませんでした。

編集:私は以下を使用しようとしました:

$curl_scraped_page = preg_replace('/charset=(.*)"/', 'charset="UTF-8"', $curl_scraped_page);

$curl_scraped_page = iconv('iso-8859-1', 'UTF-8', $curl_scraped_page);

$curl_scraped_page = utf8_encode(curl_exec($ch));

別の質問は、ユーロ記号を表示するために、UTF-8またはISO-8859-1を使用する必要があるかどうかです。

EDIT2:私はこれを試しました:

echo "Encoding is $enc";
echo iconv($enc, "ISO-8859-1", $curl_scraped_page);

結果は次のとおりです。

Encoding is ISO-8859-1

しかし、それでもユーロのシンボルはありませんでした。ページのソースを表示すると、まだひし形の疑問符が表示されますが、ブラウザで[表示]をクリックしてISO-8859-1に変更すると、ユーロ記号が表示されます。それで、それはブラウザの問題ですか?

4

5 に答える 5

1

curlのヘッダーを設定してみてください

$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"; 
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 

curlがデフォルトで「UTF-8」接続を作成する可能性があります。

編集:

「utf8_decode」でisoに変換するとどうなりますか?

PHP:curl_setopt

于 2012-05-12T18:16:13.530 に答える
1

cURL解析を行う前に、ISO-8859-1エンコーディングで解析するようにcURLを設定しました

header('Content-Type: text/html; charset=iso-8859-1');
$curl_scraped_page = curl_exec($ch);

これは、ページにあるとおりにユーロ記号を取り込むことを意味します。次に、ユーロ記号を使用してコンテンツをエコーする場合、使用しているエンコーディングに自動的にフォーマットされると思うので、エンコーディングについて心配する必要はありません。

于 2012-05-13T12:34:45.387 に答える
1

適用するだけhtmlentities(curl_exec($ch)) これは特殊文字で壊れません

于 2012-10-12T08:11:42.270 に答える
0

取得したページをエコーするWebページに同じメタContent-Type宣言を追加するだけです。

于 2012-05-12T18:15:41.673 に答える
0

文字セットを宣言するhttpヘッダーが存在しない場合を除き、Webブラウザはメタタグを使用して文字セットを判別しません。これはフォールバックであり、ほとんどのWebサーバーはhttpヘッダーを介して文字セットを指定するため、メタタグは通常実際には無視されます。

私が言っているのは、そのページは別の文字セットである可能性があるということです。

httpヘッダーを確認してください。次に、メタタグではなく、httpヘッダーを介して、一致する独自のページを宣言します。または、文字列を好みのエンコーディングに変換します。

于 2012-05-12T18:31:31.370 に答える