我有一个存储中文字符的数据库。这很好用。该系统的代码是用vbscript ASP编写的。这是一个示例http://www.arrb.com.au/test.asp
我也通过ASP.NET访问这个数据库,但这些字符不是中文的。
请参阅此处http://www.arrb.com.au/Test-Page.aspx
为什么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" />
答案 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