关于下列情况:
我有以下问题:
每当有人使用特殊字符(如德语变音)作为密码时,登录失败,因为密码是用UTF-8发布的,但应用程序希望它是用ISO-8859-1发布的。
我当然可以加上
accept-charset="ISO-8859-1"
我现在想到了一个代理脚本,它将UTF8转换为ISO-8859-1并将数据发布到www.bar.com/Servlet。转换是有效的,也是发布(由CURL完成)。但是当我直接回显www.bar.com/Servlet返回的html时(地址栏中仍然有www.foo.com),html中的相关链接不起作用。我设法用一个难看的替代品给输出添加了一个基标记,看起来很有效,但这不是一个非常优雅的解决方案。
有没有更简单的方法将UTF-8数据发布到ISO-8859-1应用程序?
define('POSTURL', 'https://www.bar.com/Servlet');
array_map('utf8_decode', $_POST);
$ch = curl_init(POSTURL);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, http_build_query($_POST));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
$response = curl_exec($ch);
curl_close ($ch);
$response = preg_replace('/(<head(.*)>)/U', "$1<base href=\"https://www.bar.com\" />", $response);
echo $response;
exit;