我尝试了很多不同的东西,无法显示欧元符号。 我正在使用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时,会出现欧元符号。这是一个浏览器问题吗?
答案 0 :(得分:1)
尝试设置curl的标题
$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
卷曲可能是默认的&#34; UTF-8&#34;连接。
编辑:
使用&#34; utf8_decode&#34;将它转换为iso的时候是什么? ?
答案 1 :(得分:1)
只需申请htmlentities(curl_exec($ch))
这不会破坏特殊字符
答案 2 :(得分:0)
只需将相同的元内容类型声明添加到您回显检索到的网页的网页上。
答案 3 :(得分:0)
Web浏览器不使用元标记来确定字符集,除非没有声明字符集的http标头。这是后备,大多数网络服务器通过http标头指定字符集,因此在实践中通常会忽略元标记。
我说:那个页面可能是一个不同的字符集。
检查http标头。然后声明您自己的页面再次通过http标头匹配,而不是元标记。或者将字符串转换为首选编码。
答案 4 :(得分:0)
在我执行cURL解析之前,我将cURL设置为用ISO-8859-1编码进行解析
header('Content-Type: text/html; charset=iso-8859-1');
$curl_scraped_page = curl_exec($ch);
这意味着它会在页面上显示欧元符号。 然后,当我用欧元符号回显内容时,我不必担心编码,因为我认为它会自动格式化为我正在使用的编码。