从文本框获取输入为hindi字符并将其存储到数据库

时间:2011-08-15 10:45:31

标签: asp.net mysql

我在我的应用程序中使用asp.net和c#,在我的数据库中使用Mysql。我想在hindi中从用户那里获取输入并将其存储在数据库中并检索它。

当我从Mysql数据库存储印地文字符时,它对我来说很好,但当我使用文本框输入印地文字符时,它显示我??????????。

我猜问题是aspx页面没有设置为支持印地文字符。请告诉我实现此目的的方法。

3 个答案:

答案 0 :(得分:1)

我想在你的Http请求上使用UTF-8编码并且响应会解决它。您的Web.config文件中的requestEncodingresponseEncoding当前设置为什么?

点击此处<globalization>标记了解详情:

http://msdn.microsoft.com/en-us/library/hy4kkhe0(v=VS.100).aspx

答案 1 :(得分:0)

哈哈..哦回忆(我只需要处理适合默认拉丁语的西班牙语)。

所以我不知道堆栈的MS端,但我认为它与Java的解决方案类型相同。也就是说,你应该总是假设UTF-8,从而使你的Content-Type HTML响应总是显示UTF-8,以便浏览器知道以UTF-8编码POST数据。您应该始终检查HTML POST的编码类型,以防您有一个忽略HTML表单编码的浏览器(某人可能正在使用curl / wget / custom-browser)。您需要了解MS-land如何从一种编码类型转换为UTF-8(在java中,作为参考,我们只说String s = new String(bytes,encoding_name))

假设MS的堆栈使用UTF-16或UCS-32或其他任何东西,以便易于提取UTF-8,接下来是mysql层。

这包括两件事...... 1)列编码必须设置为UTF8 ..它根本不明显怎么做,甚至拼写都很烦人..只是google it ..“创建数据库foo默认字符集UTF8”(近似语法),或者如果你担心由于某种原因,在表级“创建表foo(..)字符集UTF8”(近似语法)。或者如果表已经存在,请采取可以采取任意网络形式的每一列text(可能包括login-name,但不包括枚举varchars之类的列 - 因为它会浪费索引空间 - 即使你认为它不会)“alter table foo change name varchar(255)character set UTF8”(近似语法)。

2)你必须进行ODBC连接(java中的jdbc,MS中不知道),编码UTF-8的所有输入/输出字符。我设置了两个参数(use-unicode和character-set = UTF-8)(近似参数名称)。

谷歌这一切,但这应该指向你正确的方向。

通过使用character-set = UTF8和latin1连接到mysql来测试现有数据库。当连接为每个编码时,您会在文本数据中看到完全不同的输出。如果你很幸运,你已经正确地获得了数据。否则你将不得不重新生成所有数据,或执行一些非常聪明的角色转换黑客,就像我曾经做过的那样(痛苦的事情)。

答案 2 :(得分:0)

试试这个: -

// mytable=2 fields id(auto increment),title(nvarchar(max))

string title = "बिलाल";

SqlCommand cmd = new SqlCommand("insert into mytable values (N'" + title + "')", con);

con.Open();
cmd.ExecuteNonQuery();
con.Close();