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

Just Applyhtmlentities(curl_exec($ch)) 这不会在特殊字符处中断

于 2012-10-12T08:11:42.270 回答
1

在进行 cURL 解析之前,我将 cURL 设置为以 ISO-8859-1 编码进行解析

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

这意味着它采用页面上的欧元符号。然后,当我用欧元符号回显内容时,我不必担心编码,因为我认为它会自动格式化为我使用的任何编码。

于 2012-05-13T12:34:45.387 回答
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 回答
0

Web 浏览器不使用元标记来确定字符集,除非不存在声明字符集的 http 标头。这是后备,大多数网络服务器通过 http 标头指定字符集,因此元标记通常在实践中被忽略。

我是说:该页面可能是不同的字符集。

检查 http 标头。然后再次通过 http 标头而不是元标记声明您自己的页面以匹配。或者将字符串转换为您喜欢的编码。

于 2012-05-12T18:31:31.370 回答
0

只需将相同的元 Content-Type 声明添加到您正在回显检索到的页面的网页。

于 2012-05-12T18:15:41.673 回答