如何在 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>
标记。
我需要在 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>
标记。