Re: unicode

"James K. Lowden" <[email protected]>
Newsgroups gmane.comp.db.tds.freetds
Message-ID <[email protected]>
Jason Young (Morgon) wrote:
> SQL Server is a pain in regards to sending UTF strings, as you'll need 
> to prefix all of your quoted strings with capital N, for example:
> INSERT INTO utf8_table (utf8string) VALUES (N'???')

I don't see what difference the 'N' prefix makes.  

http://msdn.microsoft.com/en-us/library/ms179899.aspx

	"Unicode strings have a format similar to character strings but are
preceded by an N identifier (N stands for National Language in the SQL-92
standard). The N prefix must be uppercase. For example, 'Michél' is a
character constant while N'Michél' is a Unicode constant. Unicode
constants are interpreted as Unicode data, and are not evaluated by using
a code page."

Remember that Win32 clients use USC-2.  The SQL text is sent to the server
as USC-2.  That is, the server sees 18 bytes:

$ iconv -f iso8859-1 -t ucs-2 | hexdump -C 
N'Michél'
00000000  4e 00 27 00 4d 00 69 00  63 00 68 00 e9 00 6c 00 
|N.'.M.i.c.h...l.|
00000010  27 00

No UTF-8 anywhere in sight.  

I don't know how to interepret Microsoft's statement though.  *All* SQL
text is transmitted as UCS-2.  When that 'e9 00' arrives, the server knows
it's UCS-2, regardless of whether the string is preceded by a 'N' or not. 
Once the constants are parsed out, each one has to be converted to the
column's encoding, based on its "collation" (unless it's a UCS-2 column,
of course).  So I don't see any "interpretation" happening based on the
'N' prefix.  

FreeTDS of course has to convert from the client's encoding to UCS-2.  It
will do so regardless of the data; the 'N' prefix means nothing to
FreeTDS.  The result is precisely as above: the data arrive as UCS-2, and
I see no effect of using the 'N' prefix or not.  

--jkl
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.