问题描述:
如图,存储在数据库中的特殊字符未能正确加载,全都是问号,数据库中存储的也是问号。
原因分析:
数据库中当使用 varchar 类型存储生僻字时,由于字符编码的限制,数据库会将无法表示的字符替换为问号?或其他默认替代字符。这是因为编码中没有对应的字符定义,因此无法正确存储和显示。
而nvarchar 类型使用的是双字节编码(Unicode),可以表示更广泛的字符集,包括生僻字和非常用字符。因此,当使用 nvarchar 类型存储生僻字时,字符能够正确地保存和显示,不会出现问号或替代字符的情况。
解决方案:
1、修改该列的类型为nvarchar 。在 SQL Server 中,varchar 类型和 nvarchar 类型都用于存储可变长度的字符数据。它们之间的主要区别在于字符编码的方式。
2、再插入数据时,请使用N'特殊字符',例如:
INSERT INTO T_SPECIAL_CHARACTER(ID, SPECIALCHARACTER, CATEGORY) VALUES(NEXT VALUE FOR SEQ_CORE, N'㏒', 'mathematicalSymbols');