Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 中文简体字显示为问号菱形_Php_Html_Mysql_Mysqli_Character Encoding - Fatal编程技术网

Php 中文简体字显示为问号菱形

Php 中文简体字显示为问号菱形,php,html,mysql,mysqli,character-encoding,Php,Html,Mysql,Mysqli,Character Encoding,我已经设置了meta并检查mysql是否已经在UTF8上,这里出现了什么问题 HTML <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 查询输出 $query = $mysqli->query("select {$translate_to} as lang from locale_cn where {$translate_from} = '$phrase' "); $r

我已经设置了meta并检查mysql是否已经在UTF8上,这里出现了什么问题

HTML

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
查询输出

$query = $mysqli->query("select {$translate_to} as lang from locale_cn where {$translate_from} = '$phrase' ");
        $row = mysqli_fetch_array($query);
显示

<h1><?php echo translate("In-Kind Donation"); ?></h1>

您可能还需要设置
mb_内部编码(“UTF-8”)

有些汉字需要4字节编码。MySQL的
字符集uf8
在3字节编码处停止。更改为
utf8mb4

mysqli_set_charset($mysqli,"utf8");
mysqli_set_charset($mysqli,"utf8mb4");

你的
translate
函数做什么?它查询数据库中匹配的字符串并返回结果,否则返回原始字符串。。。我已经更新了该函数代码的问题。如果数据很好地存储在数据库中,那么我猜它缺少一个PHP头。尝试过了,但它仍然是一样的,但是当使用并添加额外的空间时,它会正确显示-mb_strtolower($row['lang'.','UTF-8');
 function translate($phrase) {

    if(!isset($_SESSION)) 
    { 
        session_start(); 
    }

    require 'db/mysql.php';

        $_GET['lang'] = $_SESSION['lang'];
        $lang_session = $_GET["lang"];

        if($lang_session == 'CN') {
            $translate_from = 'EN';
            $translate_to = 'CN';
        } 
        else {
            $translate_from = 'CN';
            $translate_to = "EN";
        } 

        $query = $mysqli->query("select {$translate_to} as lang from locale_cn where {$translate_from} = '$phrase' ");
        $row = mysqli_fetch_array($query);

        if(isset($row['lang']) && $row['lang'] !== ""){

            return $row['lang'];
        }
        else{
           return $phrase;
        }
    }
mysqli_set_charset($mysqli,"utf8");
mysqli_set_charset($mysqli,"utf8mb4");