Link to home
Start Free TrialLog in
Avatar of kelvinwkw
kelvinwkwFlag for Malaysia

asked on

Insert chinese ( utf-8 charset ) into MS SQL server

Does anyone of Experts here know how to insert chinese character (utf-8 charset) into MS SQL Server 2000?

The field are of nvarchar, whenever i attempt to insert, it shows question marks ?????????

It works if i apply either

  server.htmlEncode()

or
   
 Function c2u(CnText)
      For zzzz = 1 to Len(CnText)
        c = Mid(CnText, zzzz, 1)
        c2u = c2u & "&#x" & Hex(AscW(c)) & ";"
      next
    End Function

However the length of the field are fixed and the result will took more spaces
For instance,
请选择   ( 3 chinese characters )
will consume up to 24 nvarchar, thus this is not viable

On each of the asp page

<%@ CodePage = 65001 %>
<%
Response.expires = 0
Response.expiresabsolute = Now() - 1
Response.addHeader "pragma", "no-cache"
Response.addHeader "cache-control", "private"
Response.addHeader "cache-control", "no-cache"
Response.addHeader "cache-control", "no-store"
Response.CacheControl = "no-cache"
Response.CharSet = "utf-8"
%>
 :
 :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

I have something like this.

Thank you for the helps

Regards
Kelvin
Avatar of ap_sajith
ap_sajith

Try removing the codepage attribute. Also, are you getting the jumbled characters on your browser or in you query analyzer.

Cheers!
ASKER CERTIFIED SOLUTION
Avatar of darkeryu
darkeryu

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of kelvinwkw

ASKER

@ap_sajith  
after i remove the codepage attribute i still get the ??????? instead of chinese characters

@darkeryu
Im using a store procedure for that.

given that
@username nvarchar(30)
@password nvarchar(30)
@email varchar(100)

user nvarchar(30)
pass nvarchar(30)
email varchar(100)

select @checkExist = count(*) from login where username = @username
if @checkExist = 0
begin
      -- if username does not exist
      insert into login(user, pass, email) values(@username, @password, @email)
      select 10000 as msg
      return
end

How am i suppose to dealing with it.

hi:

you can modify sql statement

insert into login(user, pass, email) values(N@username, N@password, N@email)