So far the information is:
- You are using direct SQL INSERT script to insert into the database.
- The data appears broken in database.
The problem might lie in two places:
In your INSERT statement, did you prefix the insert value with N?
INSERT INTO #tmp VALUES (N'全澳甲流确诊病例已破100')
If you prefix the value with N, does the String object hold the correct data?
String sql = "INSERT INTO #tmp VALUES (N' " + value + "')"
Here I assume value is a String object.
Does this String object hold the correct Chinese characters?
Try print out its value and see.
Updated:
Let's assume the INSERT query is constructed as below:
String sql = "INSERT INTO #tmp VALUES (N' " + value + "')"
I assume value holds the Chinese character.
Did you assign the Chinese characters into value directly? Like
String value = "全澳甲流确诊病例已破100";
The above code shall work. However, if you have done any intermediate processing, it will cause problem.
I did a localized TC project before; the previous architect had done several encoding conversions which are necessary in ASP; but they will create 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 unnecessary. In .NET, simply direct assignment will work:
String value = "全澳甲流确诊病例已破100";
That is because String constants and the String object itself are Unicode compliant.
The framework library, such as File IO, when reading a file which is not encoded in Unicode, they will convert the foreign encoding to Unicode; in other words, the framework will do this dirty job for you. You do not need to perform manual encoding conversion most of time.
Update: Understood that ASP is used to insert data into an SQL server.
I have written a small piece of ASP to insert some Chinese chars into SQL database and it works.
I have a database named "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))
Submit the ASP page several times and my table contains proper Chinese data:
select * from trans..temp
data
----------------
test
测试
全澳甲流确诊病例已破100
Hope this can help.