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

时间:2015-10-26 07:28:40

标签: mysql unicode utf-8 sqlite encode

我需要在MySQL表中存储一些数据,但是我遇到了一些问题:“ā”“攓ō”“ĕ”(依此类推)

直到现在我将theese数据存储在SQLlite数据库中并且它很棒,因为一切都很好,但现在我正在尝试将其导出到MySQL数据库中,但奇怪的字符存储不是很好,甚至如果我尝试了不同的char编码。 (UTF-8,UTF-16,拉丁blah blah) 有谁知道这样做的正确方法?

非常感谢!!

2 个答案:

答案 0 :(得分:1)

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

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的数据库,那么您只需更改表格,如下所述:

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

答案 1 :(得分:1)

需要在大约4个地方建立utf8。

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