【问题标题】:how to insert unicode values in mysql 5.1 version using c#?如何使用 c# 在 mysql 5.1 版本中插入 unicode 值?
【发布时间】:2013-03-28 06:42:03
【问题描述】:

在我的 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();

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

【问题讨论】:

  • 我不知道在这种情况下它是否会有所帮助,但您应该转而使用参数化查询,而不是直接在 SQL 中包含您的值……尤其是要避免 SQL 注入攻击。这只是可能在 Unicode 方面也有帮助,尽管我对此表示怀疑。

标签: c# asp.net mysql c#-4.0 phpmyadmin


【解决方案1】:

您需要将其转换为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

这是一个类似的问题
how to insert arabic into mysql from asp.net C#

【讨论】:

    【解决方案2】:

    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. 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      • 2015-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多