MYSQL C#无法保存表中的原始字符

时间:2016-08-29 11:56:05

标签: c# php mysql

我试图在mysql的表中保存这行字符。

这是字符串值:

  

@£$¥èéùìòÇØøÅåΔ_ΦΓΛΩΠΨΣΘΞ^ {} \ [〜] |€ÆæßÉ\“#¤%&安培; ''()* +, - / 0123456789:!?;< =>¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà

enter image description here

表中保存的字符串值如下所示:

  

@£$¥èéùìòÇØøÅå_FG O 10 ST ^ {} [〜] |€ÆæßÉ“#¤%&安培; ''()* +, - / 0123456789:???!;< => ?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà

enter image description here 我已经将数据库字符集从默认值更改为 UTF8MB4 整理 UTF8MB4_GENERAL_CI

这是我使用的查询字符串:

"INSERT INTO Inbox (message) values  (@message);";

这是我用来保存上面字符串的MysqlParameter:

mySQLCommand.AddParameter(new MySqlParameter("@message", MySqlDbType.LongText), entity.message, ref parameters);

我注意到并非所有角色都以原始形式保存。

我是否声明了错误的mysqlParameter?还是错过了什么?

我正在使用PhpmyAdmin版本4.5.1。

谢谢! :)

1 个答案:

答案 0 :(得分:0)

首先要设置的是数据库的排序规则类型。

整理类型应设置为UTF_8mb4_general_ci

enter image description here

其次,设置表格的字符串或文本列的排序规则类型。

整理类型应设置为UTF_8mb4_general_ci enter image description here

最后,设置连接的字符集。

SERVER=localhost;DATABASE=characters;UID=root;PASSWORD=;Charset=utf8;

请参考我的示例源代码:

string sSQL = @"INSERT INTO characters VALUES(0,@message);";
            ArrayList parameter = new ArrayList();
            AddParameter(new MySqlParameter("@message", MySqlDbType.String), textBox1.Text, ref parameter);
            try
            {
                var data = mySQLCommand.Instance.ExecuteScalarSQLCommand(sSQL, parameter);

                MessageBox.Show("Save!");
            }
            catch (Exception ex)
            {
                MessageBox.Show( ex.ToString()
                    );
            }

要添加到表中的字符的示例输入:

enter image description here

点击button1后。在下图中,您可以看到插入操作后字符保留在其原始形式上。

希望这可以帮助您解决问题。

此致

Lou II