首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mysql中正确插入带有特殊字符的数据

问如何在mysql中正确插入带有特殊字符的数据
EN

Stack Overflow用户
提问于 2021-07-31 17:41:01
回答 1查看 32关注 0票数 0

在mysql中插入备注时,备注中的撇号将更改为:?changed™

例如:

代码语言:javascript
复制
$id = 1;
$body = "How have things been with you? Hope it’s going well on your end...";

$q = "INSERT INTO notes (id, note) VALUES (?, ?)";
$stmt = $mysqli->prepare($q);
$stmt->bind_param('is', $id, $body);
$stmt->execute();
$stmt->close();

保存到数据库,如下所示:

代码语言:javascript
复制
How have things been with you? Hope it’s going well on your end...

如果我使用普通的撇号,它可以工作,例如:

代码语言:javascript
复制
$id = 1;
$body = "How have things been with you? Hope it's going well on your end...";

$q = "INSERT INTO notes (id, note) VALUES (?, ?)";
$stmt = $mysqli->prepare($q);
$stmt->bind_param('is', $id, $body);
$stmt->execute();
$stmt->close();

保存到数据库,如下所示:

代码语言:javascript
复制
How have things been with you? Hope it's going well on your end...

正确的方法是什么才能使第一个示例撇号按预期保存?

数据库

代码语言:javascript
复制
Name    Type        Collation
note    longtext    utf8_general_ci     
EN

回答 1

Stack Overflow用户

发布于 2021-07-31 18:20:15

因为数据的呈现在一端的输入和另一端的呈现之间的某个地方发生了变化,这很可能是由mysql客户端应用程序(例如php)提供的字符集与服务器上配置的字符集以及提供给web浏览器的字符集之间的问题。

不要将排序规则(定义字典顺序)与字符集混淆。在比较文本之前,您可以忽略排序规则。

所有字符集都定义了应该为某个字节序列呈现哪个字符。但并不是所有的字节序列都代表每个字符集中的相同字符。因此,除了存储文本的字节之外,您还必须确保通知mysql连接和http服务器端您将如何处理字节序列。

字符集通过几种不同的方式发挥作用:

  • 文本列定义包括字符集
  • mysql连接具有可由客户端选择的字符集
  • mysql服务器为
  • 浏览器提供默认字符集

将具有用于网页呈现的默认字符集

所有这些都必须匹配,才能正确地存储、传输和呈现数据。

在ASCII、unicode、iso8859-1和许多其他字符集中,字节值0-127是相同的,这就是为什么大多数消息都能正确存储的原因。

在mysql端,客户端需要通知服务器它提供给服务器的数据的字符集。如果它告诉服务器数据是latin1格式的,然后提供utf-8数据,服务器就无法知道所提供的字符集是不正确的。

同样,在浏览器端,web服务器必须通知客户端其数据的字符集。如果它在mysql端使用latin1,并将数据放入web响应中,并将其视为utf-8,则相同的数据将不会呈现相同的内容。

对于某些客户端,不同位置的字符集的各种组合可能最终会准确地表示数据,但所有这些字符集在任何地方都是不同的总是不正确的。

(https://www.mysqltutorial.org/mysql-character-set/#:~:text=A%20MySQL%20character%20set%20is,letter%20a%20is%20the%20encoding.)如果您想更多地考虑字符集,本教程似乎已经很好地解释了它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68604495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档