C# ASP.net:用问号代替阿拉伯文本

C# ASP.net:用问号代替阿拉伯文本,c#,mysql,asp.net,utf-8,arabic,C#,Mysql,Asp.net,Utf 8,Arabic,我正在使用Visual studio 2015和MySql工作台 我有两个问题: 在将阿拉伯语数据插入数据库(MYSQL workbench)时 出现问号?????我发现解决方案要求我更改 从varchar到nvarchar的数据类型,然后在前面添加大写字母N 阿拉伯文字符串(插入到TableName(ColumnName)值(N'ArabicText'))如何在代码中应用该字符串?我试图在中添加N 不同的地方,但它不工作 当我在MySQL 工作台,程序显示消息:更改已成功应用, 然而,当我打开

我正在使用Visual studio 2015和MySql工作台

我有两个问题:

  • 在将阿拉伯语数据插入数据库(MYSQL workbench)时 出现问号
    ?????
    我发现解决方案要求我更改 从varchar到nvarchar的数据类型,然后在前面添加大写字母
    N
    阿拉伯文字符串(
    插入到TableName(ColumnName)值(N'ArabicText')
    )如何在代码中应用该字符串?我试图在中添加
    N
    不同的地方,但它不工作
  • 当我在
    MySQL
    工作台,程序显示消息:
    更改已成功应用
    , 然而,当我打开表时,我发现
    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);
    

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

    Microsoft SQL Server引入了
    NCHAR
    NVARCHAR
    NTEXT
    来处理unicode。这些都是特定于Microsoft的关键字,因此不能用于MySQL。现在,默认情况下,MySQL应该设置为处理unicode字符集,但万一您想查看以下链接:

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

    最后,还有一点不应忽视,那就是您的表单也需要符合UTF。()

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

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

    我将从数据如何进入数据库开始,然后查看数据输入后会发生什么情况。

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

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

    mysql当前版本可能不支持nvarchar
    @using (Html.BeginForm(null, null, FormMethod.Post, new { accept_charset = "utf-8" })) {
      <!-- content of form -->
    }