PHP 中的字符编码错误


Character encoding error in Php

嗨,我在 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检查。

在这种情况下,utf8utf8mb4没有区别。 后者是表情符号和一些中文所需要的。

"排序规则"(如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">(但显然这不是问题)。