我正在使用Window Application(C#),数据库是MySQL。在应用程序中,我正在获取gmail收件箱并将其保存到数据库中。但我的问题是,当我在代码Subject
或message
列中使用插入查询显示印地语中的消息但是当在数据库中保存时,它显示像这样的字符????????
。我已经在MySQL中改变了UTF-8中的所有内容。
当我使用MySQL编辑器插入相同内容时,它会保存为印地语字体。这对我来说是一个奇怪的情况,因为我是MySQL新手。
foreach (ImapMessageInfo message in messages)
{
InsertMail(message.UniqueId, message.Sender.ToString(), message.To.ToString(), message.Subject.Trim(), message.Date.LocalTime, client.GetMailMessage(message.SequenceNumber).BodyText);
}
public void InsertMail(string uid, string from, string to, string subject, DateTime datetime, string message)
{
try
{
MySqlCommand cmd = new MySqlCommand();
cmd.Parameters.AddWithValue("@unique_id", uid);
cmd.Parameters.AddWithValue("@sender", from);
cmd.Parameters.AddWithValue("@reciever", to);
cmd.Parameters.AddWithValue("@subject", subject);
cmd.Parameters.AddWithValue("@date", datetime);
cmd.Parameters.AddWithValue("@message", message);
cmd.Parameters.AddWithValue("@mail_status", "unread");
cmd.Connection = con;
string query = "Insert Ignore into gmail_inbox(unique_id,sender,reciever,subject,date,message,mail_status) values (@unique_id,@sender,@reciever,@subject,@date,@message,@mail_status) ";
cmd.CommandText = query;
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
}
}
答案 0 :(得分:1)
检查数据库的字符集和排序规则。使用UTF8应该允许您正确保存它们并正确显示它们。还要确保在初始化连接时将连接字符集设置为utf8,否则可能会发生其他错误。
基本上你需要确保列/表和连接字符集是utf8,之后你应该很好地插入你想要的数据。
答案 1 :(得分:0)
1)使用以下查询
将表格Collation设置为utf8_unicode_ci"User Id=YourUserID;Password=YourPassword;Port=3306;Database=YourDatabaseName;Character Set=utf8;
2)您需要修改连接字符串并添加字符集= utf8 它应该是这样的
{{1}}
答案 2 :(得分:0)
试试这个:
// mytable=2 fields id(Auto increment),title(nvarchar(max))
string title = "बिलाल";
SqlCommand cmd = new SqlCommand("insert into mytable values (N'" + title + "')", con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
答案 3 :(得分:0)
执行以下步骤:
"utf8 - default collection"
。在连接字符串中添加"Character Set=utf8;"
。
<appSettings>
<add key="ConnString" value="Server=xxxxx; Port=3306; Database=books;Uid=xxxx; Pwd=xxxx; Convert Zero Datetime=True; Character Set=utf8;" />
</appSettings>
答案 4 :(得分:0)
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
#update database properties
datasource.url = jdbc:mysql://localhost:3306/DBName?useUnicode=yes&characterEncoding=UTF-8