ASP.net:问号而不是阿拉伯文字
ASP.net: Question Marks instead of Arabic text
我正在使用 Visual studio 2015
Asp.net
C#
和 MySql
workbench.
我有两个问题:
- 在向数据库中插入阿拉伯语数据时(MYSQL workbench),它
出现问号
?????
我找到解决方案让我更改
数据类型由varchar转为nvarchar然后在前面加上大写N
阿拉伯字符串 (INSERT INTO TableName (ColumnName) values(N’ArabicText’)
) 如何在此代码中应用它?我试图在中添加 N
不同的地方但没有用?
当我在MySQL
中判断数据类型为NVARCHAR(45)
workbench,程序出现消息:change applied successfully
,
但是,当我打开 table 时,我发现 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服务器,所以解决方法略有不同,但出现问号的原因是一样的。您看到的是一个字符转换错误,它可能发生在您的 request/response 链中的任何一点。
Microsoft SQL 服务器引入了 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 -->
}
我将从数据如何进入您的数据库开始,然后看看数据放入后会发生什么。
尝试使用 utf8/utf8mb4 时,如果您看到 问号 (常规问号,不是黑色菱形),
- 要存储的字节未编码为utf8。解决这个问题。
- 数据库中的列是
CHARACTER SET utf8
(或utf8mb4)。解决这个问题。
- 另外,检查读取时的连接是否为utf8
我正在使用 Visual studio 2015
Asp.net
C#
和 MySql
workbench.
我有两个问题:
- 在向数据库中插入阿拉伯语数据时(MYSQL workbench),它
出现问号
?????
我找到解决方案让我更改 数据类型由varchar转为nvarchar然后在前面加上大写N
阿拉伯字符串 (INSERT INTO TableName (ColumnName) values(N’ArabicText’)
) 如何在此代码中应用它?我试图在中添加N
不同的地方但没有用? 当我在
MySQL
中判断数据类型为NVARCHAR(45)
workbench,程序出现消息:change applied successfully
, 但是,当我打开 table 时,我发现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服务器,所以解决方法略有不同,但出现问号的原因是一样的。您看到的是一个字符转换错误,它可能发生在您的 request/response 链中的任何一点。
Microsoft SQL 服务器引入了 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 -->
}
我将从数据如何进入您的数据库开始,然后看看数据放入后会发生什么。
尝试使用 utf8/utf8mb4 时,如果您看到 问号 (常规问号,不是黑色菱形),
- 要存储的字节未编码为utf8。解决这个问题。
- 数据库中的列是
CHARACTER SET utf8
(或utf8mb4)。解决这个问题。 - 另外,检查读取时的连接是否为utf8