我在我的网站上使用以下脚本来创建分页“next-previous”功能。这实际上是Dreamweaver的代码。该脚本使用url获取一些值,然后重新创建它。 IE7和IE8中的结果URL包含不可读的字符,最后页面无法正常工作。
$queryString_met = "";
if (!empty($_SERVER['QUERY_STRING'])) {
$params = explode("&", $_SERVER['QUERY_STRING']);
$newParams = array();
foreach ($params as $param) {
if (stristr($param, "pageNum_met") == false &&
stristr($param, "totalRows_met") == false) {
array_push($newParams, $param);
}
}
if (count($newParams) != 0) {
$queryString_met = "&" . htmlentities(implode("&", $newParams));
}
}
$queryString_met = sprintf("&totalRows_met=%d%s", $totalRows_met, $queryString_met);
........
<a href="<?php printf("%s?pageNum_met=%d%s", $currentPage, max(0, $pageNum_met - 1), $queryString_met); ?>"> << </a>
我不明白代码的哪一部分对此问题负责。你能帮我吗?
答案 0 :(得分:2)
htmlentities(implode(“&amp;”,$ newParams));
htmlentities
对字符串中的所有非ASCII字节进行编码,通常是不必要的,如果你没有指定charset
参数,猜测你的字符串是在ISO-8859-1中,希腊他们绝对不会。 (希望您在网站上使用UTF-8。)
使用htmlspecialchars
代替,这将保留非ASCII字符,只编码真正必须编码的内容。
但是,要成为一个问题,您必须直接在URL中使用非ASCII字符。这真的不可靠;别。未编码的非ASCII字符在URI中根本无效;它们必须%
- 编码(例如,使用urlencode
)。 IRI允许非ASCII字符,浏览器可以自动UTF-8编码和%-encode将它们转换成URI,但IE不会(总是)这样做。
[对于包含目标名称的任何值,处理查询字符串的脚本也将失败,而不仅仅是那些以它们开头的名称。]
答案 1 :(得分:1)
我认为您需要在Dreamweaver中为该页面选择文档编码:
转到Modify->Page Properties
菜单,然后在对话框中选择Title/Encoding
,然后选择西欧编码。
修改强>