我正在使用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 */;
我如何解决这个问题?
答案 0 :(得分:1)
你应该使用utfmb4。我很确定它会解决这个问题。
https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html