ASP.net:问号而不是阿拉伯语文本

时间:2016-06-23 11:52:57

标签: c# mysql asp.net utf-8 arabic

我正在使用Visual studio 2015 Asp.net C#MySql工作台。

我有两个问题:

  1. 在将阿拉伯数据插入数据库(MYSQL工作台)时,它 出现问号?????我发现解决方案要求我改变 从varchar到nvarchar的数据类型然后再添加大写N 阿拉伯字符串(INSERT INTO TableName (ColumnName) values(N’ArabicText’))如何在此代码中应用它?我尝试添加N 不同的地方,但它不起作用?
  2. 当我在NVARCHAR(45)中确定数据类型为MySQL时 工作台,程序出现消息:change applied successfully, 但是当我打开桌子时,我发现varchar(45)再次返回。

     string query = "UPDATE learningobjects SET level=?level, subjectName=?    subjectName WHERE ID=?ID";
        using (MySqlCommand cmd = new MySqlCommand(query, cn))
        {
            cmd.CommandText = query;
            cmd.Parameters.AddWithValue("?level", Level);
            cmd.Parameters.AddWithValue("?ID", lblid.Text);
    
            cmd.Parameters.AddWithValue("?subjectName", txtsubject.Text);
    

2 个答案:

答案 0 :(得分:2)

MySQL不是SQL Server,因此解决方案略有不同,但问号的原因是相同的。你所看到的是一个字符转换错误,它可能发生在你的请求/响应链中的任何一点。

Microsoft SQL Server引入了NCHARNVARCHARNTEXT来处理unicode。这些都是Microsoft特定的关键字,因此他们不能使用MySQL。这些天,默认情况下应该设置MySQL来处理unicode字符集,但以防你可能想要查看这些链接:

为了安全起见,请确保您的连接字符串指定了字符集(如果MySQL的其余部分设置为UTF,则应该没问题)

最后,其他一些不容忽视的问题是,您的表单也必须符合UTF标准。 (ref

<form action="demo_form" accept-charset="utf-8">
</form>

使用ASP.NET MVC也可以这样指定:

@using (Html.BeginForm(null, null, FormMethod.Post, new { accept_charset = "utf-8" })) {
  <!-- content of form -->
}

我将从数据如何进入您的数据库开始,然后看看数据放入后会发生什么。

答案 1 :(得分:0)

当尝试使用utf8 / utf8mb4时,如果您看到问号(常规问号,而不是黑色钻石),

  • 要存储的字节不编码为utf8。解决这个问题。
  • 数据库中的列为CHARACTER SET utf8(或utf8mb4)。解决这个问题。
  • 另外,检查读取期间的连接是否为utf8。