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; -- 結果依然是亂碼/問號
CREATE TABLE t (name VARCHAR(100) CHARACTER SET utf8mb4);
INSERT INTO t VALUES ('😀🎉🚀'); -- 直接寫入,無需前綴
-- 連接層需 SET NAMES utf8mb4 或 JDBC URL characterEncoding=utf8mb4
UTF-8 字符集的 VARCHAR(_UTF8 校對),可不加 N 直接存 Emoji,但需評估兼容性。PreparedStatement),由驅動處理編碼轉換,避免手工拼接字面值。