出现乱码是怎么回事呢,该怎么解决呢?
我安装了Microsoft .NET Framework SDK 快速入门教程,在学习“Web 窗体控件引用”这节的datagrid小节的datagrid9.aspx例子时,我用“记事本”修改了它的源代码,加入了一些中文字符,如下:
'datagrid9.aspx ****************************
<%@ Import Namespace="System.Data" %>
<html>
<script language="VB" runat="server">
Dim SortField As String
Function CreateDataSource() As ICollection
Dim dt As DataTable
Dim dr As DataRow
Dim i As Integer
'create a DataTable
dt = New DataTable
dt.Columns.Add(New DataColumn("IntegerValue", GetType(Integer)))
dt.Columns.Add(New DataColumn("StringValue", GetType(String)))
dt.Columns.Add(New DataColumn("DateTimeValue", GetType(DateTime)))
dt.Columns.Add(New DataColumn("BoolValue", GetType(Boolean)))
dt.Columns.Add(new DataColumn("CurrencyValue", GetType(Double)))
'Make some rows and put some sample data in
For i = 1 To 9
dr = dt.NewRow()
dr(0) = 9-i
Select i
Case 1
dr(1) ="刘德华" '以下几行是修改部分
Case 2
dr(1)="动力火车"
Case 3
dr(1)="郭峰"
Case 4
dr(1)="离人"
Case 5
dr(1)="林志炫"
Case 6
dr(1)="只为你唱"
Case 7
dr(1)="让我再看你一眼"
Case 8
dr(1)="冰雨"
Case 9
dr(1)="练习"
End Select
dr(2) = DateTime.Now.ToShortTimeString
If (i Mod 2 <> 0) Then
dr(3) = True
Else
dr(3) = False
End If
dr(4) = 1.23 * (i + 1)
'add the row to the datatable
dt.Rows.Add(dr)
Next
'return a DataView to the DataTable
Dim dv as DataView = New DataView(dt)
dv.Sort = SortField
CreateDataSource = dv
End Function
Sub Page_Load(sender As Object, e As EventArgs)
If Not IsPostBack Then
If SortField = "" Then
SortField = "IntegerValue"
End If
BindGrid
End If
End Sub
Sub MyDataGrid_Sort(sender As Object, e As DataGridSortCommandEventArgs)
SortField = e.SortExpression
BindGrid
End Sub
Sub BindGrid()
MyDataGrid.DataSource = CreateDataSource()
MyDataGrid.DataBind
End Sub
</script>
<body>
<h3><font face="Verdana">Custom Sorting in DataGrid</font></h3>
<form runat=server ID="Form1">
<ASP:DataGrid id="MyDataGrid" runat="server"
BorderColor="black"
BorderWidth="1"
CellPadding="3"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#cccccc"
HeaderStyle-ForeColor="black"
AutoGenerateColumns="false"
AllowSorting="true"
OnSortCommand="MyDataGrid_Sort"
>
<Columns>
<asp:BoundColumn HeaderText="Sortable" DataField="IntegerValue"
SortExpression="IntegerValue"/>
<asp:BoundColumn HeaderText="Not Sortable" DataField="DateTimeValue" />
<asp:TemplateColumn>
<HeaderTemplate>
Click to sort -->
<asp:ImageButton id=SortButton1 runat="server"
CommandName="sort" CommandArgument="StringValue"
ImageUrl="/quickstart/aspplus/images/arrow1.gif"
/>
</HeaderTemplate>
<ItemTemplate>
<asp:Label runat="server"
Text='<%# DataBinder.Eval(Container, "DataItem.StringValue") %>'
ID="Label1" NAME="Label1"/>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</form>
</body>
</html>
'************************
然后保存后,我再点击 网页上的[查看源代码]连接查看原代码时,却发现中文全变成了乱码,我在浏览器中右
击看编码,它指定到unicode(utf-8),但我把它设为简体中文,也还是不能正常显示。于是我用“记事本”打开
另外一些有中文字符并显示正常的源文件,却发现那些正常显示的中文却是乱码。
我再点击网页上的[运行示例]连接,程序运行后也是乱码。但我用记事本打开datagrid9.aspx显示却正常,我把
它单独复制到其他目录下,运行后也正常,看编码也是unicode(utf-8),但指定到简体中文也是乱码.于是我对原
目录下的配置文件有些疑问,不知是不是这个原因,配置文件如下:
***********************
<configuration>
<configSections>
<sectionGroup name="system.web">
<section name="sourceview"
type="System.Configuration.NameValueSectionHandler,System,Version=1.0.5000.0,Culture=neutral,Publ
icKeyToken=b77a5c561934e089" />
</sectionGroup>
</configSections>
<appSettings>
<add key="RemoteHost" value="false" />
</appSettings>
<system.web>
<!-- <identity impersonate="true" /> -->
<sourceview>
<add key="root" value="D:\Program Files\Microsoft Visual Studio .NET
2003\SDK\v1.1\QuickStart" />
</sourceview>
<globalization requestEncoding="UTF-8" responseEncoding="UTF-8" fileEncoding="UTF-8" />
</system.web>
</configuration>
*************************************
还是有其他原因,我该怎么解决这个问题呢?