asp.net - 通过 ASP.NET 在 MySql4 中插入 unicode 文本

标签 asp.net mysql unicode utf-8

我正在为一家机构编写一个新网站,该机构有 4000 个用户,存储在 MySql4 中!

我使用 mysql-connector/net 通过 asp.net 连接到 MySql 数据库,

一切都很好,除了更新unicode模式的信息!

不幸的是我对unicode了解不多!

连接MySql数据库并读取数据是这样的:

using MySql.Data.MySqlClient;
...
MySqlConnection con;
MySqlCommand cmd;

string tempstr = "Database=DB-NAME;Data Source=SOURCE;charset=utf8;User Id=USER;Password=PASS";
con = new MySqlConnection(tempstr);
con.Open();
cmd = con.CreateCommand();
cmd.CommandText = "select * from list_membership";
cmd.CommandType = CommandType.Text;
MySqlDataReader reader = cmd.ExecuteReader();
reader.Read();

现在,当我读取地址时,我会得到这样的信息:زÙØاÙ

幸运的是我已经使用函数blew解决了这个问题:

public string DecodeFromUtf8(string utf8String)
{
   // copy the string as UTF-8 bytes.
   byte[] utf8Bytes = new byte[utf8String.Length];
   for (int i = 0; i < utf8String.Length; ++i)
   {
       //Debug.Assert( 0 <= utf8String[i] && utf8String[i] <= 255, "the char must be in byte's range");
       utf8Bytes[i] = (byte)utf8String[i];
   }
   return Encoding.UTF8.GetString(utf8Bytes, 0, utf8Bytes.Length);
}

现在,我将垃圾字符串发送到函数,并得到如下正确的形式:вандан(波斯语)

问题是,例如,当我想要更新或插入地址字段时,除了一些像这样的问号之外,数据库中不会存储任何内容:???? ??????

有人知道我该怎么办吗? DecodeFromUtf8 函数有反向形式吗?

请原谅我的英语不好, 谢谢。

最佳答案

我不知道这是否有助于解决问题,但是 DecodeFromUtf8 的反向操作应该如下所示:

public string EncodeToMySQL4(string str)
{
   Encoding latin1 = new Encoding(1252);
   return latin1.GetString(Encoding.UTF8.GetBytes(str));
}

关于asp.net - 通过 ASP.NET 在 MySql4 中插入 unicode 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18186741/

相关文章:

html - 通过 Controller CSS 访问 View 时不起作用

python2.7类型错误: not all arguments converted during string formatting

php - MySQL中Select语句的默认上限是多少?

mysql - 使用什么数据库系统? (EAV 与 FK?)

java - 使用Java,这个charAt();怎么样?将字符串转换为整数?

python - PyYaml - 转储带有特殊字符(即重音符号)的 unicode

asp.net - 网络测试软件

c# - ASP Repeater 没有以正确的顺序显示数据

c - 如何计算超过 1 个字节的 unicode 字符的字符串长度(以字节为单位)?

c# - 强制 asp.net 下拉列表展开