MySQL 在插入 UTF-8 列时会截断 latin-1 数据。如何得到错误?

标签 mysql utf-8 character-encoding latin1

好的,当我尝试插入一个字符串时遇到了问题,该字符串被认为是 UTF-8 格式,而实际上是 latin-1。问题是,不同服务器之间的行为各不相同,例如:

  • 当遇到非 UTF8 字符时,Windows 会给出错误:“错误的字符串值:'\xD1OL S....' 对于列 [...]”

  • Linux 会悄悄地插入我给它的任何内容,直到找到它不喜欢的第一个字符,然后截断字符串的其余部分。

这一次,我发现 Windows 行为是我更想要的行为。我一直在寻找,但没有找到某种选项来使 mysql linux 服务器更加严格。

你现在有一个吗?

谢谢!

最佳答案

嗯,速度很快。问题是,我们的 5.6 Linux 服务器并未处于严格模式,尽管我们的 DBA 向我保证确实如此,这让我们认为这是 Linux 问题。

因此,只需激活STRICT_ALL_TABLES。 MySQL 模式以及如何激活它们如下:

http://dev.mysql.com/doc/refman/5.6/en/sql-mode.html

关于MySQL 在插入 UTF-8 列时会截断 latin-1 数据。如何得到错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23342531/

相关文章:

javascript - 从远程服务器获取一个 JSON 文件(包含希伯来语值)并在 Node.js 中解析它

node.js - 如何在 node.js 中捕获箭头键

java - Openshift JBoss 字符编码

sql-server - Msg 9402, Level 16, State 1, Line 9 XML解析: line 1,字符38,无法切换编码

php - 处理要插入 UTF-8 数据库的 CSV 数据编码

mysql - SQL : error with an inner join, 可能很简单

php - 使用php编写的mysql查询

python-3.x - 在 Python3 中读取 UTF-8 编码文件和文本文件

php - mysqli_fetch_assoc while 循环不工作

php - 使用php从mysql捕获数据通过ajax发送到js并填充表