我正在使用Visual studio 2015
Asp.net
C#
和MySql
工作台。
我有两个问题:
?????
我发现解决方案要求我改变
从varchar到nvarchar的数据类型然后再添加大写N
阿拉伯字符串(INSERT INTO TableName (ColumnName) values(N’ArabicText’)
)如何在此代码中应用它?我尝试添加N
不同的地方,但它不起作用?当我在NVARCHAR(45)
中确定数据类型为MySQL
时
工作台,程序出现消息:change applied successfully
,
但是当我打开桌子时,我发现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);
答案 0 :(得分:2)
MySQL不是SQL Server,因此解决方案略有不同,但问号的原因是相同的。你所看到的是一个字符转换错误,它可能发生在你的请求/响应链中的任何一点。
Microsoft SQL Server引入了NCHAR
,NVARCHAR
和NTEXT
来处理unicode。这些都是Microsoft特定的关键字,因此他们不能使用MySQL。这些天,默认情况下应该设置MySQL来处理unicode字符集,但以防你可能想要查看这些链接:
为了安全起见,请确保您的连接字符串指定了字符集(如果MySQL的其余部分设置为UTF,则应该没问题)
最后,其他一些不容忽视的问题是,您的表单也必须符合UTF标准。 (ref)
<form action="demo_form" accept-charset="utf-8">
</form>
使用ASP.NET MVC也可以这样指定:
@using (Html.BeginForm(null, null, FormMethod.Post, new { accept_charset = "utf-8" })) {
<!-- content of form -->
}
我将从数据如何进入您的数据库开始,然后看看数据放入后会发生什么。
答案 1 :(得分:0)
当尝试使用utf8 / utf8mb4时,如果您看到问号(常规问号,而不是黑色钻石),
CHARACTER SET utf8
(或utf8mb4)。解决这个问题。