我想从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;"/>
答案 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;"/>