C# ASP.net:用问号代替阿拉伯文本
我正在使用Visual studio 2015和MySql工作台 我有两个问题:C# ASP.net:用问号代替阿拉伯文本,c#,mysql,asp.net,utf-8,arabic,C#,Mysql,Asp.net,Utf 8,Arabic,我正在使用Visual studio 2015和MySql工作台 我有两个问题: 在将阿拉伯语数据插入数据库(MYSQL workbench)时 出现问号?????我发现解决方案要求我更改 从varchar到nvarchar的数据类型,然后在前面添加大写字母N 阿拉伯文字符串(插入到TableName(ColumnName)值(N'ArabicText'))如何在代码中应用该字符串?我试图在中添加N 不同的地方,但它不工作 当我在MySQL 工作台,程序显示消息:更改已成功应用, 然而,当我打开
?????
我发现解决方案要求我更改
从varchar到nvarchar的数据类型,然后在前面添加大写字母N
阿拉伯文字符串(插入到TableName(ColumnName)值(N'ArabicText')
)如何在代码中应用该字符串?我试图在中添加N
不同的地方,但它不工作MySQL
工作台,程序显示消息:更改已成功应用
,
然而,当我打开表时,我发现varchar(45)
再次返回
string query = "UPDATE learningobjects SET level=?level, subjectName=? subjectName WHERE ID=?ID";
using (MySqlCommand cmd = new MySqlCommand(query, cn))
{
cmd.CommandText = query;
cmd.Parameters.AddWithValue("?level", Level);
cmd.Parameters.AddWithValue("?ID", lblid.Text);
cmd.Parameters.AddWithValue("?subjectName", txtsubject.Text);
MySQL不是SQL Server,所以解决方案有点不同,但问号的原因是相同的。您看到的是一个字符转换错误,它可能发生在请求/响应链的任何一点上 Microsoft SQL Server引入了
NCHAR
、NVARCHAR
和NTEXT
来处理unicode。这些都是特定于Microsoft的关键字,因此不能用于MySQL。现在,默认情况下,MySQL应该设置为处理unicode字符集,但万一您想查看以下链接:
也可以使用ASP.NET MVC这样指定:
@using (Html.BeginForm(null, null, FormMethod.Post, new { accept_charset = "utf-8" })) {
<!-- content of form -->
}
@使用(Html.BeginForm(null,null,FormMethod.Post,new{accept_charset=“utf-8”})){
}
我将从数据如何进入数据库开始,然后查看数据输入后会发生什么情况。当尝试使用utf8/utf8mb4时,如果您看到问号()(常规的,而不是黑钻石)
- 要存储的字节未编码为utf8。解决这个问题
- 数据库中的列是字符集utf8(或utf8mb4)。解决这个问题
- 此外,检查读取期间的连接是否为utf8
@using (Html.BeginForm(null, null, FormMethod.Post, new { accept_charset = "utf-8" })) {
<!-- content of form -->
}