【发布时间】:2019-04-07 11:13:13
【问题描述】:
我的 Mysql 数据库的列类型为 varchar(8192) latin2_croatian_ci。我在那里插入这样的文本:Čćžvasfamižsafaš(这是带有特殊字符的随机文本)。当我在 mysql 中预览数据时,它确实有那个特殊字符(它没有被 ? 或其他东西替换)。
我有php页面
<!DOCTYPE html>
<?php
session_start();
include("somePhpFile");
$cid = $mysqli->escape_string($_GET["id"]);
$sql = "SELECT BODY FROM ... WHERE CLANAKID = '$cid'";
if($result = $mysqli->query($sql))
{
$clanak = mysqli_fetch_assoc($result);
$body = $clanak["BODY"];
}
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Some title</title>
<link rel="stylesheet" type="text/css" href="../Styles/Clanak.css?id=4" />
<link rel="stylesheet" type="text/css" href="../Styles/DefaultBody.css" />
<meta charset="UTF-8"/>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="../jQuery/Header.js"></script>
</head>
<body>
<?php include("someHeaderphp");?>
<div id="BodyDiv">
<?php echo($body); ?>
</div>
</body>
</html>
当我在页面中回显它时,所有特殊字符都会被? 和其他字符替换。我能做什么?
这是我的Show create table:
CREATE TABLE `CLANAK` (
`CLANAKID` int(11) NOT NULL AUTO_INCREMENT,
`NASLOV` varchar(64) NOT NULL,
`BODY` varchar(8192) CHARACTER SET latin2 COLLATE latin2_croatian_ci NOT NULL,
`THUMBNAIL` varchar(1024) NOT NULL,
`AKTIVAN` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`CLANAKID`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1
【问题讨论】:
-
php.net/manual/en/mysqli.set-charset.php 并检查 http
Content-Type的字符集 -
@Deadooshka 谢谢。添加简单的
$mysqli->set_charset("utf8");解决了我的问题。