MYSQL C# 无法保存表格中的原始字符
Posted
技术标签:
【中文标题】MYSQL C# 无法保存表格中的原始字符【英文标题】:MYSQL C# Cannot save the original characters in the table 【发布时间】:2017-01-05 10:55:33 【问题描述】:我正在尝试将这行字符保存在 mysql 的表中。
这是字符串值:
@£$¥èéùìòÇØøÅåΔ_ΦΓΛΩΠΨΣΘΞ^\[~]|€ÆæßÉ!\"#¤%&''()*+,-./0123456789:;?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà
表格中保存的字符串值如下所示:
@£$¥èéùìòÇØøÅå?_FG?O??ST?^[~]|€ÆæßÉ!"#¤%&''()*+,-./0123456789:;?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑÜ §¿abcdefghijklmnopqrstuvwxyzäöñüà
我已经将数据库字符集从默认更改为 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 版。
谢谢! :)
【问题讨论】:
您可能必须将其保存为数据库中的 BLOB 字段,并在每次要从数据库中检索它时进行转换 @Stivan 谢谢你的建议。我会试试这个!让我们看看。 :) 您是否尝试在 c# 中加载回您的字符串? 你试过ascii_bin吗 也可以试试 utf8_bin.. 【参考方案1】:首先要设置数据库的排序规则类型。
排序规则类型应设置为 UTF_8mb4_general_ci
其次,设置表格的字符串或文本列的排序规则。
排序规则类型应设置为 UTF_8mb4_general_ci
最后,设置连接的字符集。
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()
);
要添加到表中的字符示例条目:
点击按钮后1.在下图中,您可以看到插入操作后字符仍保留其原始形式。
希望这对您的问题有所帮助。
问候,
楼二
【讨论】:
以上是关于MYSQL C# 无法保存表格中的原始字符的主要内容,如果未能解决你的问题,请参考以下文章