Php 中文简体字显示为问号菱形
我已经设置了meta并检查mysql是否已经在UTF8上,这里出现了什么问题 HTMLPhp 中文简体字显示为问号菱形,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 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");