問題描述
最近發現在不同的數據庫中,有時中文佔用2個字節,有時佔用3個字節;
經過分析發現,對於varchar類型的字段:
如果數據庫字符集使用utf-8,則3個字節表示一箇中文;
如果數據庫字符集使用gbk,則2個字節表示一箇中文;
數據庫字符集查看方式如下:
查看數據庫字符集
/*
UTF8
是一種針對Unicode的可變長度字符編碼,
對英文使用8位(1個字節)編碼,
中文使用24位(3個字節)編碼
GBK
是在國家標準GB2312基礎上擴容後兼容GB2312的標準,中英文都是2個字節。
*/
-- 查看sqlserver字符集
SELECT SERVERPROPERTY('Collation') AS Collation, COLLATIONPROPERTY('Chinese_PRC_CI_AS', 'CodePage') AS CodePage;
-- 結果
-- Collation CodePage
-- Chinese_PRC_CI_AS 936
-- 查看db2字符集
SELECT NAME,value FROM SYSIBMADM.DBCFG WHERE NAME LIKE '%code%';
-- 結果
-- NAME VALUE
-- codepage 1208
-- codeset UTF-8
-- 查看oracle字符集
SELECT * FROM nls_database_parameters WHERE PARAMETER = 'NLS_CHARACTERSET';
-- 結果
-- PARAMETER VALUE
-- NLS_CHARACTERSET ZHS16GBK