.php 文件的字符编码错误

Posted

技术标签:

【中文标题】.php 文件的字符编码错误【英文标题】:Character encoding error for .php file 【发布时间】:2015-11-19 09:05:58 【问题描述】:

已经为返回 json 的 MarkersController.php 创建了一个路由,但是当我导航到该路由时出现以下错误:

未声明 html 文档的字符编码。如果文档包含 US-ASCII 范围之外的字符,则文档将在某些浏览器配置中呈现乱码。页面的字符编码必须在文档或传输协议中声明。

我的路线如下:

$app->get('/markers/?', function () use ($app) 
    $controller = new UF\MarkersController($app);
    return $controller->getMarkersJSON();
); 

MarkersController.php

<!DOCTYPE html>
<html lang="en">
    <head>
    % include 'components/head.html' %
    </head>
    <body>
<?php
include('DB_INFO.php');

function getMarkersJSON()     
// Opens a connection to a mysql server.
$connection = mysqli_connect($server, $username, $password);

if (!$connection) 
    die('Not connected : ' . mysqli_error());
// Sets the active MySQL database.
$db_selected = mysqli_select_db($database, $connection);

if (!$db_selected) 
    die('Can\'t use db : ' . mysqli_error());

// Selects all the rows in the markers table.
$query = "SELECT * FROM tester WHERE 1";
$result = mysqli_query($connection, $query);

if (!$result) 
    die('Invalid query: '. mysqli_error());

$markers = array();
while ($row = mysqli_fetch_assoc($result)) 
    //Assuming "lat" is column name in tester table. Please change it if required.
    $lat= $rows['lat'];
    //Assuming "lng" is column name in tester table. Please change it if required.
    $lng= $rows['lng'];
    $markers = array('lat' => $lat, 'lng' => $lng);

echo json_encode($markers);

?>
 </body>
</html>

【问题讨论】:

哪个网络浏览器告诉你这个? 使用此代码,您可以输出带有 JSON 的 HTML。这是你真正想要的吗?您不希望其他程序读取 JSON 吗? @mmm 不,只是希望它输出json,将在其他地方使用...... @fst104 所以摆脱 HTML... @MonkeyZeus 删除 html 后仍然出现错误! 【参考方案1】:

你的 head.html 中有 Content-Type 定义吗? 如果答案是否定的,请尝试放置

<meta http-equiv="Content-Type" content="text/html;charset=[your-charset]" />

进入你的 head.html

【讨论】:

以上是关于.php 文件的字符编码错误的主要内容,如果未能解决你的问题,请参考以下文章

php文件字​​符编码、mysql数据库字符编码、特殊字符

PHP 的 XML 字符编码问题

PHP开发-多字节字符串处理及字符编码

PHP开发-多字节字符串处理及字符编码

PHP:RFC-2231 如何将 UTF-8 字符串编码为 Content-Disposition 文件名

使用 PHP/MS Access 的字符编码难题