im尝试向数据库中的希伯来语lang用户字符串发送消息,代码工作正常,但是当将其存储到数据中时,所有字符均为问号
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();
答案 0 :(得分:0)
将列的数据类型更改为存储在数据库中的NVARCHAR,例如:
旧表结构:
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)
);
我想,该消息是以该列的当前字符集不支持的语言发送的。
这是我系统的工作集,我还如下更改了表字符集和排序规则,然后工作正常。
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,'dhhzhzhzzhjzj 我爱你 ❌');
Query OK, 1 row affected (0.09 sec)
mysql> select * from test_emoji;
+------+---------------------------------------------+
| col1 | str_with_emoji |
+------+---------------------------------------------+
| 1 | dhhzhzhzzhjzj 我爱你 ❌ |
+------+---------------------------------------------+
1 row in set (0.00 sec)
EDIT-2:在SQL Server中: 您必须在字符串之前在实际字符串之外使用“ N”前缀:
insert into test_emoji(col1,str_with_emoji) values (1,N'dhhzhzhzzhjzj 我爱你 ❌');