【问题标题】:Character encoding error in PhpPhp中的字符编码错误
【发布时间】:2016-03-17 14:41:11
【问题描述】:

您好,我在 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();

【问题讨论】:

  • 你的 MySQL 表和你的页面的字符集是什么?在我看来,你必须在那里有所不同。如果可以的话,最好将所有内容都保存在 utf-8 中。
  • 它是 utf8_general_ci,这是我检查的第一件事我什至尝试将其更改为 utf8_bin 但没有运气
  • 显示您如何查询此数据库,以及数据库编码为什么? (字符集!=排序规则)
  • @Qirel - 没错,就是字符集。我的错。我更新了我的评论。
  • UTF-8 all the way through的可能重复

标签: php html mysql encoding


【解决方案1】:

’ 是 utf8 RIGHT SINGLE QUOTATION MARK 的 Mojibake,电脑圈一般不使用。 (你可能从一些文字处理包中得到它。)

htmlentities 不应与此讨论相关。如果网页有’,那你就乱七八糟了。根据您所说,我认为它没有’

是的,需要$conn->set_charset("utf8");。这通常是解决此类问题的方法。

但是,您还需要表/列是CHARACTER SET utf8,是吗?请SHOW CREATE TABLE查看。

utf8utf8mb4 在这种情况下没有区别。 Emoji 和部分中文需要后者。

“排序规则”(例如utf8_general_ci)与此讨论无关。但是,utf8_general_ci适用于utf8,因此某些 cmets 是明确的。

总结:

  • 您的字节显然是 utf8,
  • set_charset
  • 检查表格/列,
  • HTML4 需要<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">; HTML5 可以缩短它:<meta charset="UTF-8">(但显然这不是问题)。

【讨论】:

  • 我得到了它的工作谢谢!由于某种原因 不起作用,但在 php 中使用 header('Content-Type: text/html; charset=utf-8') 它起作用了。有什么想法吗?
  • 我添加了可能的答案。
猜你喜欢
  • 2015-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-08
  • 2023-03-16
  • 2016-02-28
  • 1970-01-01
  • 2016-09-12
相关资源
最近更新 更多