2

我想将阿拉伯语内容从 asp.net 页面插入到 mysql5.5,我正在使用 mysqlconnector5.2.7 与本地 mysqlserver 连接。当我尝试从 asp.net 程序插入阿拉伯语时,空值被插入到数据库中,尽管当我尝试从命令提示符插入时,所有单词都显示为???,我在谷歌上搜索了更多,但我找不到任何解决方案。请参阅下面的代码。我更改了数据库、表格和阿拉伯语列在命令提示符下使用alter查询到utf8,但我仍然找不到任何解决方案,如何在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();

网络配置

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

6 回答 6

5

使用此连接字符串

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

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

ALTER TABLE `myTbl` DEFAULT CHARACTER SET utf8
于 2012-11-18T16:58:38.940 回答
3

我遇到了同样的问题。

我在我的 webconfig 中简单地添加了 CHARSET=utf8 并解决了问题

<connectionStrings>
    <add name="ConnectionString" connectionString="Server=192.168.1.4;Database=downtodate;Uid=root;CHARSET=utf8"/>
  </connectionStrings>
于 2013-03-14T12:49:16.023 回答
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);
于 2012-11-18T16:11:45.687 回答
1

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

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

于 2012-11-18T16:22:48.350 回答
1

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

  确保集合和字符集具有 utf8 和 utf8_unicode 
  在 unicode 文本前添加“N”
    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
于 2019-04-29T15:01:41.177 回答
0

问题是,是的,您的数据库字符集是 utf8,但您的应用程序不知道它。它认为您的字符集为 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;"/>
于 2015-03-14T19:57:11.443 回答