如何在 MySQL 数据库中以正确的方式存储奇怪的字符

How to store weird chars in the correct way in a MySQL DB

我需要在 MySQL table 中存储一些数据,但是我遇到了这些字符的一些问题:“ā”“攓ō”“ĕ”(等等上)

直到现在我将这些数据存储在 SQLlite 数据库中,这很棒,因为一切都很好,但现在我试图将其导出到 MySQL 数据库中,但奇怪的字符没有存储以好的方式,即使我尝试了不同的字符编码。 (UTF-8、UTF-16、拉丁语等等) 有谁知道这样做的正确方法吗?

非常感谢!!

您可以切换到 BLOB 数据类型,或者如果您坚持使用 TEXT/VARCHAR/CHAR,那么您需要更改 table 和数据库的字符集,如下所示。

CREATE DATABASE mydbname
    CHARACTER SET utf8
    COLLATE utf8_general_ci;

USE mydbname;

CREATE TABLE `mytable` (
    `data` varchar(200) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

如果您已经有一个 utf8 字符集和排序规则设置为 utf8_general_ci 的数据库,那么您可以简单地更改 table,如下所述:

ALTER TABLE `mytable` CHANGE `data` `data` VARCHAR(100) 
CHARSET utf8 COLLATE utf8_general_ci DEFAULT '' NOT NULL;

utf8需要在4处左右建立

  • 数据库中的列 -- 使用 SHOW CREATE TABLE 验证它们是否明确设置为 utf8,或者默认为 table 定义。 (改数据库default还不够。)
  • 客户端和服务器之间的连接。参见 SET NAMES utf8
  • 您拥有的字节数。
  • 如果要在网页中显示文本,请检查 <meta> 标记。