So far information:
- You are using a direct SQL INSERT script to insert into the database.
- Data is displayed in the database.
The problem can be in two places:
In an INSERT statement, do you prefix an insert value with N?
INSERT INTO #tmp VALUES (N '全 澳 甲 流 确诊 病例 已 破 100')
If you prefix the value with N, does the String object contain the correct data?
String sql = "INSERT INTO #tmp VALUES (N '" + value + "')"
Here I assume that the value is a String object.
Does this String object contain the correct Chinese characters?
Try printing its value and see.
Update
Suppose an INSERT query is structured as follows:
String sql = "INSERT INTO #tmp VALUES (N' " + value + "')"
I guess the value contains chinese character.
Have you assigned Chinese characters to a value directly? how
String value = "全澳甲流确诊病例已破100";
The above code should work. However, if you did any intermediate processing, this will cause a problem.
I have done a localized TC project before; the previous architect made several coding transformations that are required in ASP; but they will create a problem in .NET:
String value = "全澳甲流确诊病例已破100"; Encoding tc = Encoding.GetEncoding("BIG5"); byte[] bytes = tc.GetBytes(value); value = Encoding.Unicode.GetString(bytes);
The above conversions are not needed. In .NET, direct assignment just works:
String value = "全澳甲流确诊病例已破100";
This is because String constants and the String object itself are Unicode compatible.
A frame library, such as File IO, when reading a file that is not Unicode encoded, converts the external encoding to Unicode; in other words, the structure will do this dirty work for you. You no longer need to perform manual coding.
Update . It is understood that ASP is used to insert data into the SQL server.
I wrote a small part of ASP to insert some Chinese characters into an SQL database and it works.
I have a database called "trans" and I created a table "temp" inside. The ASP page is encoded in UTF-8.
<html> <head title="Untitled"> <meta http-equiv="content-type" content="text/html";charset="utf-8"> </head> <body> <script language="vbscript" runat="server"> If Request.Form("Button1") = "Submit" Then SqlQuery = "INSERT INTO trans..temp VALUES (N'" + Request.Form("Text1") + "')" Set cn = Server.CreateObject("ADODB.Connection") cn.Provider = "sqloledb" cn.Properties("Data Source").Value = ********* cn.Properties("Initial Catalog").Value = "TRANS" cn.Properties("User ID").Value = "sa" cn.Properties("Password").Value = ********** cn.Properties("Persist Security Info").Value = False cn.Open cn.Execute(SqlQuery) cn.Close Set cn = Nothing Response.Write SqlQuery End If </script> <form name="form1" method="post" action="input.asp"> <input name="Text1" type="text" /> <input name="Button1" value="Submit" type="submit" /> </form> </body> </html>
The table is defined as belows in my database:
create table temp (data NVARCHAR(100))
Send the ASP page several times, and my table contains the correct Chinese data:
select * from trans..temp data
Hope this helps.