首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL varchar/nvarchar 存儲 Emoji 等特殊字符實戰:N 前綴與 Unicode 存儲機制

     編輯:MySQL 綜合教學

MySQL varchar/nvarchar 存儲 Emoji 等特殊字符實戰:N 前綴與 Unicode 存儲機制

SQL Server 中 varchar 無法存儲補充平面字符(Emoji、生僻字),nvarchar 需配合 N'...' 前綴才能正確寫入 Unicode。本文實測對比 varchar/nvarchar 行為差異,解析 N 前綴語義、Unicode 存儲機制與 MySQL 對應策略。

現象複現

ALTER TABLE t ALTER COLUMN saleUserName NVARCHAR(50);
UPDATE t SET saleUserName = '小覃祝你😀快樂' WHERE id = 87;
-- 結果依然是亂碼/問號

關鍵:N 前綴聲明 Unicode 字面值

CREATE TABLE t (name VARCHAR(100) CHARACTER SET utf8mb4);
INSERT INTO t VALUES ('😀🎉🚀'); -- 直接寫入,無需前綴
-- 連接層需 SET NAMES utf8mb4 或 JDBC URL characterEncoding=utf8mb4

避坑清單

  • SQL Server 2019+ 支援 UTF-8 字符集的 VARCHAR(_UTF8 校對),可不加 N 直接存 Emoji,但需評估兼容性。
  • 應用層統一使用參數化查詢(PreparedStatement),由驅動處理編碼轉換,避免手工拼接字面值。
  • 讀取時確保客戶端字符集與存儲一致,否則顯示亂碼但數據實際完好。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved