Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 6205
  • Last Modified:

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
0
kelvinwkw
Asked:
kelvinwkw
  • 2
1 Solution
 
ap_sajithCommented:
Try removing the codepage attribute. Also, are you getting the jumbled characters on your browser or in you query analyzer.

Cheers!
0
 
darkeryuCommented:
hi:

i have this problem before...
you need insert the sql with

insert into table(fd1,fd2) values(N'val1',N'val2')

then you can response correctlly..

thanks
0
 
kelvinwkwAuthor Commented:
@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.

0
 
darkeryuCommented:
hi:

you can modify sql statement

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

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now