我所看到的所有浏览器中的所有网页都显示得很好,但我注意到在运行Android操作系统的移动设备(HTC One)上有些奇怪(和一些iPhone,但不是全部)。 Android浏览器在整个页面中显示随机数字和字母,无论文件中存在PHP代码(而不仅仅是我回显数据的区域)。它们不是特殊字符,这让我觉得这不是字符编码问题,而是看起来它们可能是十六进制字符 - 如“c14”,“9e”,“22a”,“92d”,“fe3b “,”3471“(仅举几个例子) - 每次刷新浏览器时它们都会改变或来去。如果我继续刷新,一些字符模式将再次出现,就好像它循环通过某些东西,但我无法精确定位模式。最大的问题是,有时这些东西会落入HTML表单输入标记的值,并搞乱提交的数据。
我原本以为这可能是一个字符编码问题,所以我仔细检查我的PHP文件是否编码为UTF-8,但这并没有改变任何东西。
下面是一小段简单的代码,我一直在修改以试图找出问题:
<?php
include('connect-db.php');
if(isset($_GET['seid']) && is_numeric($_GET['seid']) && $_GET['seid'] > 0){
$sub_event_id = $_GET['seid'];
$sub_event_id = mysql_real_escape_string($sub_event_id);
$result = mysql_query("SELECT sub_event_id, event_name
FROM event_details
WHERE sub_event_id=$sub_event_id") or die(mysql_error());
$row = mysql_fetch_assoc($result);
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title><?php echo $row['event_name']; ?></title>
</head>
<body>
<?php echo $row['sub_event_id']; ?>
</body>
</html>
<?php } ?>
以下是浏览器中显示内容的示例。
如果 $ row ['event_name']是,让我们说“Party at Joe's” 和 $ row ['sub_event_id']是,让我们说“1”
这是您在浏览器的“查看源代码”中看到的随机示例之一:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>22
Party at Joe's
18</title>
</head>
<body>
5
1
11
</body>
</html>
0
如果我刷新浏览器,随机数可能会消失然后回来,但底部的“0”通常在大多数情况下都会出现。具有更多代码的文件也倾向于包含随机字母。而且,这些似乎出现在文件中存在PHP代码的任何地方。有时也在页面的最顶端。
答案 0 :(得分:0)
Fistly 尝试添加较旧的UTF-8元设置,只是因为该特定设备上的浏览器不会查找新的元属性:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
其次(最近发生在我身上)尝试在新文件中手动重新输入代码,如果您从其他来源复制了代码,则该源可能是在编码错误的IDE中编写的首先,您可能已将示例代码中的不可见字符复制到新脚本中......
最后确保为UFT-8正确配置用于编写脚本的工具,以确保以正确的编码键入代码。 即使将编码错误的代码粘贴到具有适当编码设置的IDE中,也无法解决所有字符编码问题。
您可以通过使用HEX编辑器打开脚本并查看二进制文件来识别脚本是否包含不可见的字符,可能还有一些额外的字节不会突出显示任何内容。有时,不可见的字符可以在HEX编辑器中显示。
https://en.wikipedia.org/wiki/Comparison_of_hex_editors
Notepad ++使用Hex Editor插件:
https://sourceforge.net/projects/npp-plugins/files/Hex%20Editor/