如何从asp.net C#中将arabic插入mysql

时间:2012-11-18 16:01:38

标签: c# asp.net mysql arabic

我想从asp.net页面插入阿拉伯语内容到mysql5.5,我使用mysqlconnector5.2.7连接本地mysqlserver.when我试图从asp.net程序插入阿拉伯语,空值插入到数据库中,尽管当我尝试从命令提示符插入时,所有单词都显示为???,我在谷歌搜索更多,但我找不到任何解决方案。请参阅下面的代码。我改变了数据库,表格和阿拉伯语的列到utf8使用命令提示符下的alter query,但我仍然找不到任何解决方案,如何在datagridview上显示这个阿拉伯语

myconnection.Open();
string insert="insert into home_table(image,content,arabiccontent) values(@image,@content,arabiccontent)";
MySqlCommand cmd = new MySqlCommand(insert,myconnection);
MySqlParameter param = new MySqlParameter("@image", MySqlDbType.VarBinary, image.Length);
param.Value = image;
cmd.Parameters.Add(param);

cmd.Parameters.Add(new MySqlParameter("@content",MySqlDbType.VarChar,Content.Length));

cmd.Parameters["@content"].Value = Content;
cmd.Parameters.Add(new MySqlParameter("@arabiccontent", MySqlDbType.VarChar, contentarabic.Length));
cmd.Parameters["@arabiccontent"].Value = contentarabic.Trim();
cmd.ExecuteNonQuery();
myconnection.Close();

的web.config

 <add name="mysqlconnectionstring" connectionString="Data Source=localhost;Database=mydatabase_;Uid=root;Pwd=root;CharSet=cp1256;"/>

6 个答案:

答案 0 :(得分:4)

使用此连接字符串

Datasource=localhost; Database=testdb; Uid=root; Pwd=123;CHARSET=utf8

并确保它是CHARSET而不是CharSet或charset! 同时尝试更改表格和字段的DEFAULT CHARACTER SET

ALTER TABLE `myTbl` DEFAULT CHARACTER SET utf8

答案 1 :(得分:2)

我遇到了同样的问题。

我在webconfig中添加了CHARSET = utf8并解决了问题

<connectionStrings>
    <add name="ConnectionString" connectionString="Server=192.168.1.4;Database=downtodate;Uid=root;CHARSET=utf8"/>
  </connectionStrings>

答案 2 :(得分:1)

最好的方法是将文本转换为base 64字符,然后将其存储到数据库中。而从数据库中获取它时使用反之亦然。

 byte[] byt = System.Text.Encoding.UTF8.GetBytes(strOriginal);
// convert the byte array to a Base64 string
strModified = Convert.ToBase64String(byt);

并通过此

返回正常字符串
  byte[] b = Convert.FromBase64String(strModified);
strOriginal = System.Text.Encoding.UTF8.GetString(b);

答案 3 :(得分:1)

听起来你有编码问题。确保您全面使用UTF8编码。对于MySQL,这意味着确保表是UTF8,而不是latin1或其他一些编码。还要确保您与MySQL的连接是UTF8。我不知道如何在ASP / C#中做到这一点,但通常你可以在连接后运行“查询”SET NAMES UTF8,它会直接设置。

您也可以在命令行/提示符上执行该查询,这将停止显示???。请注意,它不会将已经错误存储的数据转换为数据库,因此现有数据可能会或可能无法正确显示。

答案 4 :(得分:1)

如何从vb.net将阿拉伯语插入mysql。

  make sure that collection and character set have utf8 and utf8_unicode 
  add 'N' before unicode text
    strconn = "server=servername;port=3306;database=database;uid=user;pwd=pass;Character Set=utf8;"
    strsql = "UPDATE table SET ItemNameArabic= N'ArabicName' "

    Dim conn As MySqlConnection = New MySqlConnection(strconn)
    Dim cmd As MySqlCommand = New MySqlCommand()
    cmd.CommandText = strsql
    cmd.Connection = conn
    conn.Open()
    Try
        Dim aff As Integer = cmd.ExecuteNonQuery()
        MessageBox.Show(aff & " rows were affected.")
    Catch
        MessageBox.Show("Error encountered during INSERT operation.")
    Finally
        conn.Close()
    End Try

答案 5 :(得分:0)

问题是,是的,您的数据库字符集是utf8,但您的应用程序不知道它。它认为你的charset为cp1256。

 <add name="mysqlconnectionstring" connectionString="Data Source=localhost;Database=mydatabase_;Uid=root;Pwd=root;CharSet=cp1256;"/>

你应该声明它。有一些解决方案,但最简单的解决方案是添加连接字符串charset = utf8;

用它来解决问题

 <add name="mysqlconnectionstring" connectionString="Data Source=localhost;Database=mydatabase_;Uid=root;Pwd=root;CHARSET=utf8;"/>