HTML Symbols are being displayed as a question mar

2019-04-27 22:50发布

问题:

Today i noticed that html symbols such as: ★ are being displayed in my database as a question mark.

I'm using varchar as type and the database i am using is microsoft sql 2008.

Does anyone know a fix for this?

回答1:

You need to use NVARCHAR datatype for your column, VARCHAR datatype can only be use for non-unicode character.

if you are storing unicode characters in your datatype you should use NVARCHAR datatypes and when inserting Data into your Column use the N prefix telling sql server there will be some unicode characters in the passed string.

With VARCHAR DataType

CREATE TABLE #Temp (Column1 VARCHAR(100))
INSERT INTO #Temp VALUES('★')
SELECT * FROM #Temp

Result

╔═════════╗
║ Column1 ║
╠═════════╣
║ ?       ║
╚═════════╝

With NVARCHAR DataType

CREATE TABLE  #Tempn (Column1 NVARCHAR(100) )
INSERT INTO #Tempn VALUES(N'★')        --<-- N prefix for Unicode Characters
SELECT * FROM #Tempn

Result

╔═════════╗
║ Column1 ║
╠═════════╣
║ ★       ║
╚═════════╝


回答2:

Define the symbol as an NVARCHAR instead of a VARCHAR



回答3:

insert into tablename values (N'★ ') 

above is the syntax for inserting and make sure your field data type is nvarchar or try this test example

create table test (abc nvarchar)
insert into test values (N'★ ')
 select * from test