早几天的时候一直对XSP支持中文的问题耿耿于怀。想重新编译XSP来修正对中文支持的问题,可惜功力不够
只能够重新编译但编译后的exe却无法响应Http的访问.....(如果谁成功编译过请指教)
于是今天想了想如果从数据库读来的数据包含中文情况会怎么样。于是随便写了个测试代码:
数据库使用的是 MySql 4.1
很简单的一个表
+---------+-----------+-----------+
| user_id | user_name | user_pass |
+---------+-----------+-----------+
| 1 | jay | jay |
| 2 | jason | jason |
| 3 | 张三 | 张三 |
+---------+-----------+-----------+
Example:
<%@ Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<HTML>
<Head>
<Title>Mono</Title>
<META http-equiv=Content-Type content="text/html; charset=GB2312">
<script language="c#" runat="server">
private void Page_Load(Object Sender,EventArgs e)
{
string connectionString =
"Server=localhost;" +
"Database=MonoDB;" +
"User ID=root;" +
"Password=123456;" +
"Pooling=true";
MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection(connectionString);
conn.Open();
System.Data.DataSet ds = new System.Data.DataSet();
MySql.Data.MySqlClient.MySqlDataAdapter MySqlAdapter = new MySql.Data.MySqlClient.MySqlDataAdapter(
"SELECT * FROM User_info;",conn
);
MySqlAdapter.Fill(ds,"User_info");
if (!Page.IsPostBack)
{
DropDownList_UserName.DataSource=ds;
DropDownList_UserName.DataBind();
}
conn.Close();
conn=null;
}
</script>
</Head>
<Body>
中国(China)
<p>
<form name="form1" runat="server">
<asp:DropDownList ID="DropDownList_UserName" runat="server" DataTextField="User_name" DataValueField="User_id"></asp:DropDownList>
</form>
</Body>
</HTML>
在执行前把MySql的驱动文件放到与网页同级的Bin目录下面就可以了,
还有对于Mono来说只能使用MySql 7.1以后的驱动文件才可以
运行XSP结果如下图:
看来XSP是可以支持中文的。因此推断是在某个 System.Text.Encoding 编码的时候使用了 UTF-8 的编码
所以才造成的。该写封信个 Mono Team 了。