2012-11-18 68 views
1

我想從asp.net頁面插入阿拉伯語內容到mysql5.5,我使用mysqlconnector5.2.7來連接本地mysqlserver.when我試圖從asp插入阿拉伯語.net程序中,null值被插入到數據庫中,儘管如此,當我嘗試從命令提示符插入時,所有單詞都顯示爲???,我在google上搜索得更多,但我找不到任何解決方案。請參閱我的代碼below.I改變了數據庫,表和阿拉伯語列上使用命令提示符下更改查詢爲utf8,但我仍然無法找到任何解決方案,如何顯示這個阿拉伯語上的DataGridView如何從asp.net C插入阿拉伯語到mysql#

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

最好的方法是將您的文本轉換爲基本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); 
+0

你能告訴我怎樣才能爲它編寫的代碼? – suhail

+0

謝謝..它解決了這個問題.. – suhail

+0

總是歡迎:) –

1

恢復正常字符串聽起來像是你有一個編碼問題。確保你在整個電路板上使用UTF8編碼。對於MySQL,這意味着確保表格是UTF8,而不是latin1或其他編碼。還要確保你與MySQL的連接是UTF8。我不知道如何在ASP/C#中做到這一點,但通常你可以在連接之後運行「查詢」SET NAMES UTF8,它會讓事情變得順利。

您也可以在命令行/提示符下執行該查詢,這將停止顯示???。請注意,它不會將數據庫中已存儲的數據錯誤地轉換,因此現有數據可能會顯示或可能無法正確顯示。

2

使用此連接字符串

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

,並確保它是CHARSET,而不是字符集或charset! 也可以嘗試改變你的表和字段的DEFAULT CHARACTER SET

ALTER TABLE `myTbl` DEFAULT CHARACTER SET utf8 
2

我都面臨着同樣的問題。

我添加CHARSET = UTF8在我的webconfig簡單,解決問題

<connectionStrings> 
    <add name="ConnectionString" connectionString="Server=192.168.1.4;Database=downtodate;Uid=root;CHARSET=utf8"/> 
    </connectionStrings> 
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;"/>