如何在我的 WinForms 应用程序中保存和检索非拉丁字符
本文关键字:丁字符 字符 检索 我的 WinForms 应用程序 保存 | 更新日期: 2023-09-27 18:36:01
我有一个WinForms应用程序,它应该能够保存(到db)并在以后显示非拉丁字符。我知道它与字符集有关。我的数据库和所有表的默认字符集都设置为 utf8。但这仍然不能挽救非拉丁字符:)保持其怪异性。
经过一些谷歌搜索和SO-ing,我知道这是关于SET NAMES 'utf8'
的事情。但是我在哪里应用它?SO上很多类似的线程都处理php,他们说必须在查询开始时包含SET NAMES 'utf8'
。但是在我的代码中,有数百个查询,修补每个地方都是一团糟。
如果我需要为此配置 MySQL,那么可以通过编程方式完成吗?我希望通过在连接字符串中设置它有一些解决方案。
我试过这个:
conString = "SERVER=localhost;DATABASE=hi;UID=root;PASSWORD=;Min Pool Size=0;Max Pool Size=200;SET NAMES 'utf8'";
这给出了运行时错误,指出连接字符串格式不正确。
这个答案说The collation is only used for sorting and comparison, not for saving data.
我试过这个,效果很好。
conString = "SERVER=localhost;DATABASE=hi;UID=root;PASSWORD=;Min Pool Size=0;Max Pool Size=200;charset=utf8;";
编辑:让我完成它。
.NET 连接器手册说"CharSet specifies the character set that should be used to encode all queries SENT TO THE SERVER. Resultsets are still returned in the character set of the result data."
这意味着:
1,仅当将数据保存到数据库时才需要设置charset=utf8
,而不是在检索时,因为 .NET 连接器以保存的格式检索它。我并不是说在读取数据时必须修改连接字符串以删除charset=utf8
,不。它是双向的。只是明确表示只有明确保存才需要charset=utf8
.
2,您的数据库将其默认字符集设置为 utf8 甚至不是最重要的。即使是 latin1 如果你在连接字符串中将字符集定义为 utf8 也会这样做
我测试了上述案例。