4

我的问题是使用 C# 和 MySQL 数据库通过发送参数来保存一些记录时。

虽然我已经将字符集设置为 Utf-8 并且我可以正确看到 unicode 字符,但我在尝试插入 unicode 字符时遇到的问题是它只保存了一半的字符串。

真正奇怪的是,这仅发生在 unicode 字符串(如希腊词)中,并且仅在我发送带有参数的查询时发生。

IE。如果我在 C# 中看到的查询是:

string query = "INSERT INTO tablename VALUES (NULL, @somestring)";

我将@somestring 参数值设置为“TESTING”。这会很好用。

如果我尝试将值设置为 unicode 字符串“ΤΕΣΤΙΝΓ”,则查询执行得很好,没有错误,但只保存了数据库中的一半字符,即。它只保存“ΤΕΣΤ”。

另一方面,如果我删除参数并将查询调整为:

string somestring = "ΤΕΣΤΙΝΓ";
string query = "INSERT INTO tablename VALUES (NULL,'" + somestring + "')";

查询再次正常工作并将整个单词/句子保存在数据库中。

希望我解释正确,你能理解我的情况。

谢谢

4

1 回答 1

5

c# 中声明参数@somestring 的长度太短。

UTF-8 每个字符最多占用 3 个字节,因此您需要长度为 21 而不是 7,例如以适应测试及其变化

话虽如此,我还没有使用 c# 来调用 MySQL(仅 SQL Server),但我确定这是问题所在

于 2012-01-21T15:21:37.687 回答