Why is Turkish Lira symbol ₺ replaced with ? in SQL server 2008 database -



Why is Turkish Lira symbol ₺ replaced with ? in SQL server 2008 database -

any thought why turkish lira symbol replaced question mark when insert in table in database. see image below

this not font issue. unicode (ucs-2) vs ascii character set issue (i.e. nvarchar vs varchar). character trying utilize not exist in ascii character set (which varchar datatype can hold). not in standard range of 0 - 127, , while might perchance in particular code-pages's set--all of in range of 128 - 255--it not in current code-page's definition since seeing ?. can run next see yourself:

select '₺'; print '₺';

it both prints , displays in results grid ?

if want see character sql server thinks is, run following:

select ascii('₺');

and return: 63

if want see character has ascii value of 63, run this:

select char(63);

and return: ?

now run this:

select n'₺'; print n'₺';

this both print , display in results grid correctly.

to see character value symbol is, run following:

select unicode(n'₺'), unicode('₺');

this return: 8378 , 63

but isn't 63 question mark? yes. because not prefixing string literal '₺' capital n tells sql server varchar , gets translated default unknown character.

the way prepare is:

change datatype of field nvarchar (i see in comment on question field varchar). if field varchar if utilize n prefix on string, character still stored ?. change insert statement prefix string field capital n: (73, 4, n'(3) ₺'). if alter field nvarchar, if don't prefix string n sql server translate character ? first , insert ?.

sql-server sql-server-2008 tsql unicode

Comments

Popular posts from this blog

formatting - SAS SQL Datepart function returning odd values -

c++ - Apple Mach-O Linker Error(Duplicate Symbols For Architecture armv7) -

php - Yii 2: Unable to find a class into the extension 'yii2-admin' -