在 SQL 中,“字符集(Character Set)”的设置通常涉及 数据库、表、字段 三个层级,以及 连接字符集。下面以常见数据库为例说明。
-- 查看数据库字符集
SHOW VARIABLES LIKE 'character_set_database';
-- 查看服务器字符集
SHOW VARIABLES LIKE 'character_set_server';
-- 查看表字符集
SHOW TABLE STATUS LIKE 'table_name';
-- 查看字段字符集
SHOW FULL COLUMNS FROM table_name;
-- 数据库
CREATE DATABASE db_name
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- 表
CREATE TABLE user (
id INT,
name VARCHAR(50)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 字段
CREATE TABLE user (
id INT,
name VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
);
-- 修改数据库
ALTER DATABASE db_name
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- 修改表
ALTER TABLE user
CONVERT TO CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- 修改字段
ALTER TABLE user
MODIFY name VARCHAR(50)
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
SET NAMES utf8mb4;
或在连接字符串中指定:
jdbc:mysql://host/db?useUnicode=true&characterEncoding=utf8mb4
PostgreSQL 使用 encoding 概念。
-- 数据库编码
SELECT datname, encoding FROM pg_database;
-- 客户端编码
SHOW client_encoding;
CREATE DATABASE db_name
WITH ENCODING 'UTF8'
LC_COLLATE 'zh_CN.UTF-8'
LC_CTYPE 'zh_CN.UTF-8';
SET client_encoding TO 'UTF8';
⚠️ PostgreSQL 不支持直接修改数据库编码,通常需重建数据库。
SQL Server 使用 排序规则(Collation) 控制字符集。
SELECT name, collation_name
FROM sys.databases;
CREATE DATABASE db_name
COLLATE Chinese_PRC_CI_AS;
CREATE TABLE user (
name NVARCHAR(50) COLLATE Chinese_PRC_CI_AS
);
ALTER DATABASE db_name
COLLATE Chinese_PRC_CI_AS;
utf8mb4(MySQL)或 UTF8(PG)utf8mb4_unicode_ci 或 UTF8如果你告诉我:
我可以给你更精确的 SQL 示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。