sql数据库中的字符串是问号c#

ntjbwcob  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(438)

我试图给用户的消息字符串是希伯来语从数据库的语言代码是工作正常,但当它存储到数据所有字符都是问号

zx = user photo id its not a hebrew string works perfect .
cap = e.Message.Caption.ToString();
usern = userid in table works perect to.

con.Open();
                using (var cmd = new SqlCommand("update Accs2 set PhotoId = '" + zx + "',
                PhotoCap= '" + cap  + "' where Username like '%" + usern + "%'", con))
                {
                   await cmd.ExecuteNonQueryAsync();
                   await bot.SendTextMessageAsync(cid, "Your Photo And Caption Saved!", parseMode: ParseMode.Html, replyMarkup: exit);

                 }
                con.Close();
ewm0tg9j

ewm0tg9j1#

将列的数据类型更改为nvarchar,并将其存储在db中,例如:
旧表结构:

CREATE TABLE (
COL_1 VARCHAR(10)
COL_2 VARCHAR(500),
...
COL_N VARCHAR(10)
);

将消息存储在“col_2”列中,然后将其更改为nvarchar,如下所示:

CREATE TABLE (
    COL_1 VARCHAR(10)
    COL_2 NVARCHAR(500),
    ...
    COL_N VARCHAR(10)
    );

我猜,消息是以列的当前字符集不支持的语言发出的。

编辑-1:用示例解决方案更新

这是我的系统的工作集,我也改变了表字符集和排序规则如下,然后它的工作良好。

mysql> create table test_emoji(col1 int, str_with_emoji varchar(200)) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
Query OK, 0 rows affected (0.40 sec)

mysql> insert into test_emoji(col1,str_with_emoji) values (1,'dh????hzhzhzzhjzj 我爱你 ❌');
Query OK, 1 row affected (0.09 sec)

mysql> select * from test_emoji;
+------+---------------------------------------------+
| col1 | str_with_emoji                              |
+------+---------------------------------------------+
|    1 | dh????hzhzhzzhjzj 我爱你 ❌                      |
+------+---------------------------------------------+
1 row in set (0.00 sec)

edit-2:在sql server中:必须在字符串前面使用“n”前缀,如下所示,在实际字符串之外:

insert into test_emoji(col1,str_with_emoji) values (1,N'dh????hzhzhzzhjzj 我爱你 ❌');

相关问题