嗨我已經開發了一個Windows應用程序,它允許用戶保存數據並以泰米爾字體查看數據。我安裝了'Bamini'字體(泰米爾語字體),並將文本框和datagridview設置爲Bamini字體。我能夠在泰米爾保存和檢索數據。C#:無法打印數據爲來自MYSQL數據庫的Unicode字符
問題是我輸入的泰米爾數據被編碼並保存在數據庫 例如:如果我在文本框中輸入'இந்தியா'並保存,它被保存爲mysql,db中的「,e; j_ah」列字符集設置爲utf8)。 由於這個,當我得到數據並嘗試打印它時,它正在打印「,e; j_ah」而不是'இந்தியா'。
任何人都可以讓我知道我在這裏做錯了嗎?!我使用插入串
代碼:
textBox1的值是 'இந்தியா'(因爲文本字體被設置爲 'Bamini' 泰米爾字體)
string insertdata = "INSERT INTO tamil (country) VALUES (@cnt)";
MySqlCommand cmd = new MySqlCommand(insertdata,connection);
connection.Open();
cmd.Parameters.AddWithValue("@cnt",textBox1.Text);
cmd.ExecuteNonQuery();
connection.Close();
數據庫受到影響如下:
tablename: Tamil
Sno Country
1 ,e;j_ah
表海虹之彩cture:
CREATE TABLE `tamil` (
`sno` int(11) auto_increment NOT NULL,
`Description` varchar(50) NOT NULL,
`Country` varchar(50) character set utf8 NOT NULL,
KEY `id_sno` (`sno)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
您是否調試過並檢查了您從文本框中檢索的字符串是否具有正確的數據?我建議記錄字符串中每個字符的UTF-16值 - 例如,'foreach(char c in text){Console.WriteLine(((ushort)c).ToString(「x4」)); }' –
接下來,請向我們展示您用於將數據保存到數據庫的代碼。 –
在使用Unicode字符之前,您可能必須使用UTF-8解碼數據庫列中的字節流。 – SBS