嗨,我在 mysql 列中存储了一些文本。我得到的错误是,每当文本中有撇号 (') 时,它就会显示为"——™即使撇号显示在数据库中 任何想法会是什么错误?我花了几天时间,但没有运气
您可以在此处检查错误:http://beta.writiely.com/
这是它如何连接和获取结果
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * from textDocs";
$result = $conn->query($sql);
$res = array();
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
array_push($res,array('t'=>$row['t'],'co'=>$row['cover'],
'text'=>$row['txt']));
}
} else {
return false;
}
$conn->close();
’
是utf8 RIGHT SINGLE QUOTATION MARK
的Mojibake,通常不用于计算机圈。 (您可能是从某个文字处理包中得到的。
html实体应该与此讨论无关。 如果网页有’
,你就会有一团糟。 我不认为它’
基于你所说的话。
是的,需要$conn->set_charset("utf8");
。 这通常是此类问题的解决方法。
但是,您还需要CHARACTER SET utf8
表/列,是吗? SHOW CREATE TABLE
检查。
在这种情况下,utf8
和utf8mb4
没有区别。 后者是表情符号和一些中文所需要的。
"排序规则"(如utf8_general_ci
)与此讨论无关。 然而,utf8_general_ci
只适用于utf8
,所以一些评论是明确的。
总结:
- 你的字节显然是utf8,
- 做
set_charset
, - 检查表/列,
- HTML4需要
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
;HTML5可以缩短它:<meta charset="UTF-8">
(但显然这不是问题)。