如何访问SQL并在ASP.NET中显示中文字符?

时间:2011-03-29 00:36:56

标签: asp.net cjk

我有一个存储中文字符的数据库。这很好用。该系统的代码是用vbscript ASP编写的。这是一个示例http://www.arrb.com.au/test.asp

enter image description here

我也通过ASP.NET访问这个数据库,但这些字符不是中文的。

请参阅此处http://www.arrb.com.au/Test-Page.aspx

enter image description here

为什么ASP工作和ASP.NET不起作用?

在ASP.NET中访问中文的代码类似于:

query = "select * from myTable ....";

SqlDataAdapter da = new SqlDataAdapter(query, Yart.SQLServerConnections.SqlConnection);
DataSet ds = new DataSet();
da.Fill(ds, "paragraphs");

Response.Write((string)ds.Tables["paragraphs"].Rows[0]["chinese"]);

我认为这可能是我对一个破坏编码的字符串的演员?

请注意,在两个示例页面中,我都有以下标记:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

3 个答案:

答案 0 :(得分:1)

将数据保存到数据库时使用了什么编码?尝试在执行Response.Write之前转换字符串以使用相同的编码。

此处提供的编码列表... http://msdn.microsoft.com/en-us/library/system.text.encoding(v=VS.100).aspx

以下是用于转换为正确类型http://msdn.microsoft.com/en-us/library/kdcak6ye.aspx

的方法

答案 1 :(得分:1)

上面的答案有帮助,这是如何做到的......

网上有很多关于此的文章:

http://csharpindepth.com/Articles/General/Strings.aspx

http://www.joelonsoftware.com/articles/Unicode.html

但足以说明这一点。当您从表单回发中保存字符时,字符 进行编码。如果您没有指定编码,则会为您确定。

这可能非常令人困惑!

中文字符在ASP中可能看起来没问题但在ASP.NET中看起来不行。

因此,要停止问题,请始终声明您的编码!通常我们使用utf-8。

在ASP中,执行以下操作:

<% @CodePage = 65001 %>
<%Option Explicit%>

<%
Session.CodePage = 65001 
Response.CodePage = 65001
Response.CharSet = "utf-8" 
%>

直接保存SQL时,请确保将字符保存在nvarchar,ntext等中 确保SQL语句具有N个字符

update [someTable] set [col]=N'...'

也用HTML声明编码:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

在ASP.NET中,将其添加到web.config:

<globalization
requestEncoding="utf-8"
responseEncoding="utf-8"
fileEncoding="utf-8"/>

答案 2 :(得分:0)

也许这门课可以帮到你:

System.Text.UTF8Encoding

相关问题