HTML文档的字符编码未声明 CodeIgniter

4

我的CodeIgniter应用程序出现了一个奇怪的错误:

The character encoding of the HTML document was not declared. The document will render with garbled text in some browser configurations if the document contains characters from outside the US-ASCII range. The character encoding of the page must be declared in the document or in the transfer protocol.

在第一次访问时,页面看起来很好,只有一个消息“ guimbu”。如果刷新页面,则出现错误,直到清除浏览器的历史记录为止。这只会在第二个页面查看后发生。请看:http://guimbu.com/soon
  • 我刚刚用Sublime打开了所有文件,并保存为UTF-8;两次。
  • 我刚刚尝试使用所有字符集meta标签;
  • 这对于所有页面都是如此,包括这个简单的页面;

我的autoload.php如下:

$autoload['packages'] = array();
$autoload['libraries'] = array('session', 'database', 'firephp', 'auth');
$autoload['helper'] = array('url', 'log_helper', 'api_helper', 'string_helper');
$autoload['config'] = array('ci_opauth', 'rest', 'ci_auth');
$autoload['language'] = array();
$autoload['model'] = array();

我该如何调试这个问题?

更新:

@sudhir,感谢你的回答,但我已经尝试了很多次。实际上,源代码只是:

<!DOCTYPE html>
<head>
    <title>guimbu</title>
    <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
    <meta content="utf-8" http-equiv="encoding">
</head>
<body>
    guimbu =)
</body>
</html>

第二次页面加载后错误仍然存在 =/ 可能是会话的问题吗?

更新可能性:

当我从autoload中删除sessionauth库时,问题就不会出现。什么鬼?auth是我用于用户认证的库。

3个回答

2
当你刷新页面时,你会得到一个空白的页面,如果你查看该页面的源代码,你会发现它是空白的,但是有一个数字计数。我猜测当页面刷新时,你正在做一些发送空格到浏览器的操作。我只能建议不要使用?>来关闭你的文件,让php处理你的脚本将如何退出/死亡。你的代码中有一些空格导致了这个问题。

谢谢建议。我已经从3个文件中移除了?>,但问题仍然存在。我发现一个可能性:当我从AUTOLOAD中移除SESSION和AUTH库时,问题就不会发生。WTF?(auth是我自己写的库) - Leabdalla
没有成功。我只是将auth清除为**class auth { }**,问题仍然存在。有没有办法可以调试这个问题? - Leabdalla
移除 ?> 之后,我可以自动加载 auth 库。现在问题只出现在 session 库上。 - Leabdalla
@Leabdalla 嘿,它之前能工作一秒钟,你做了什么? - afarazit
明天我会继续。也许会有进展,哈哈哈。谢谢你,来自巴西的问候! - Leabdalla
显示剩余6条评论

1
尝试将以下内容添加到视图的头部部分:

<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">

0

找到解决方案

在Session类构造函数的开头,它加载了String帮助程序。 昨天我创建了一个名为string_helper.php的帮助程序,这个冲突导致应用程序崩溃。

我重命名了我的string_helper.php文件,现在一切正常。

谢谢大家!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接