2

在我的 asp.net 应用程序中,我有一些 unicode 格式的数据(印地语-印度语言)。现在我想将此 unicode 文本插入 mysql(5.1) 数据库。当我运行以下 C# 代码时,文本存储在我的数据库中就像?????? 而不是我的 unicode 文本。但是当我通过phpmyadmin执行查询时,它被正确存储。

我已经将 db、table 和特定字段排序规则设置为utf8_general_ci。并将 db 字符集设置为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();

另外,请参考我下面的图片。(表结构)

在此处输入图像描述

4

2 回答 2

2

您需要将其投射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

这是一个类似的问题
,如何从 asp.net C# 将阿拉伯语插入 mysql

于 2013-03-28T07:09:24.003 回答
0

MySQL 5.1 支持两种字符集来存储 Unicode 数据:

ucs2, the UCS-2 encoding of the Unicode character set using 16 bits per character.

utf8, a UTF-8 encoding of the Unicode character set using one to three bytes per character. 
于 2013-03-28T06:50:29.373 回答