在我的 asp.net 应用程序中,我有一些 unicode 格式的数据(印地语-印度语言)。现在我想将此 unicode 文本插入到 mysql(5.1) 数据库中。当我运行下面的 C# 代码时,存储的文本在我的数据库中,就像 ?????? 而不是我的 unicode 文本。但是当我通过 phpmyadmin 执行查询时,它被正确存储。
我已经将数据库、表和特定字段排序规则设置为utf8_general_ci。并将数据库字符集设置为 utf8。
string mysql_query2 = "SET NAMES 'utf8'";
da.UpdateCommand = new MySqlCommand(mysql_query2, mysqlCon);
da.UpdateCommand.ExecuteNonQuery();
string para_text="हिन्दी भारत";
string para_outerxml="की राष्ट्रभाषा";
string status="जयपुर। हास्य-व्यंग्य";
string sql = "Insert into sand_box (para_text,para_outerxml,status) values('" + para_text + "','" + para_outerxml + "','" + status+")";
da.InsertCommand = new MySqlCommand(sql, mysqlCon);
da.InsertCommand.ExecuteNonQuery();
另外,请引用我下面的图片。(表结构)
最佳答案
您需要将其转换为 base-64
并按如下方式插入
var langText = Convert.ToBase64String(Encoding.UTF8.GetBytes("yourtext"));
在取回时将其转换为普通字符串,如下所示
var Normal=Encoding.UTF8.GetString(Convert.FromBase64String("your base64text"));
编辑 1
所以你的插入应该是这样的
string mysql_query2 = "SET NAMES 'utf8'";
da.UpdateCommand = new MySqlCommand(mysql_query2, mysqlCon);
da.UpdateCommand.ExecuteNonQuery();
string para_text="हिन्दी भारत";
string para_outerxml="की राष्ट्रभाषा";
string status="जयपुर। हास्य-व्यंग्य";
string sql = "Insert into sand_box (para_text,para_outerxml,status)
values('" + Convert.ToBase64String(Encoding.UTF8.GetBytes(para_text)) + "','"
+ Convert.ToBase64String(Encoding.UTF8.GetBytes(para_outerxml)) + "','" +
Convert.ToBase64String(Encoding.UTF8.GetBytes(status))+")";
da.InsertCommand = new MySqlCommand(sql, mysqlCon);
da.InsertCommand.ExecuteNonQuery();
编辑2
关于c# - 如何使用 C# 在 mysql 5.1 版本中插入 unicode 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15675757/