curl do_post_request将charset从iso-8859-1更改为utf-8

时间:2012-06-26 13:46:12

标签: curl utf-8 iso-8859-1

我一直试图解决这个问题很长一段时间,但我认为我需要一个超越知识来做到这一点。

我有一个编码为iso-8859-1的PHP页面。 当有人在其上注册时,会向管理员发送邮件,并将用户插入数据库。

我需要获取一些数据并将它们传递给另一个函数。 我通过包含do_post_request函数来使用curl,它几乎完美地工作。

问题是当我使用这个函数传递数据时,删除了所有带重音的字符。 我无法更改第一页的编码,因为否则会损坏数据库中的电子邮件和插入。我需要找到一个使用utf-8标头发布数据的解决方案。

这里有一个简化的代码:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
...
...
// insert in the db
$result = mysql_query($query,$conn);

function do_post_request($url, $data, $optional_headers = null){
        $params = array('http' => array(
            'method' => 'POST',
            'content' => $data
        ));
        if ($optional_headers !== null) {
            $params['http']['header'] = $optional_headers;
        }
        $ctx = stream_context_create($params);
        $fp = @fopen($url, 'rb', false, $ctx);
        if (!$fp) {
            throw new Exception("Problem with $url, $php_errormsg");
        }
        $response = @stream_get_contents($fp);
        if ($response === false) {
            throw new Exception("Problem reading data from $url, $php_errormsg");
        }
        return $response;
}

$test = do_post_request($crmURL, $crmData);
mail('sugar.fornaciari@gmail.com','New user',"body message",'From: Me <info@myDomain.it>');
</body>
</html>

任何想法怎么办? 欢呼声

1 个答案:

答案 0 :(得分:0)

我还在努力,但我疯了......

我无法弄清楚如何将从iso-8859-1表单发送的字符集转换为UTF-8字符。

换句话说,如果我有2页A和B且A在ISO中并且将参数发送到B为UTF-8,则不会保存像“òùìù”这样的参数。

但是如果我创建变量iside B就像“òùìù”这个数据当前已保存。

因为我无法更改A,有没有办法将数据转换为A?