【问题标题】:MySQL does not recognize all UTF-8 charactersMySQL 无法识别所有 UTF-8 字符
【发布时间】:2016-07-12 18:39:40
【问题描述】:

我正在使用 MySQL 服务器,我需要在其中写入/读取一些包含拉丁字符的内容,例如 čćšž,但由于某种原因,我的数据库无法存储 č 和 ć 字符。

据我所知,这些字符应该属于 utf8_general_ci。

我将此添加到 my.cnf 文件中:

[mysqld]  
init_connect='SET collation_connection = utf8_general_ci'  
init_connect='SET NAMES utf8'  
character-set-server=utf8  
collation-server=utf8_general_ci  
skip-character-set-client-handshake

看看这张全编码的图片:

我使用 SOURCE 命令将我的数据库导入服务器。以下是 SQL 转储的内容:

SET NAMES utf8;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`horoskopium`  DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

USE `horoskopium`;

/*Table structure for table `day` */

DROP TABLE IF EXISTS `day`;

CREATE TABLE `day` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `text` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=85 DEFAULT CHARSET=utf8;

/*Table structure for table `love` */

DROP TABLE IF EXISTS `love`;

CREATE TABLE `love` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `text` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=97 DEFAULT CHARSET=utf8;

/*Table structure for table `month` */

DROP TABLE IF EXISTS `month`;

CREATE TABLE `month` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `text` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8;

/*Table structure for table `week` */

DROP TABLE IF EXISTS `week`;

CREATE TABLE `week` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `text` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=utf8;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

我该如何解决这个问题?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您应该使用 utfmb4。我很确定它会解决这个问题。

    https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html

    Utf8_general_ci or utf8mb4 or...?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-04
      • 1970-01-01
      • 2012-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      相关资源
      最近更新 更多