我有一个网站,还有几个文本框。如果用户填写了包含字母"ë“的内容,则如下所示:
ë我如何将它像这样存储在数据库中?我的网站是使用C#语言建立在.NET和Iam上的。
发布于 2012-04-27 01:10:56
ASP.Net (您的服务器端应用程序)和SQL Server都支持Unicode。它们可以处理不同的语言和不同的字符集:
http://msdn.microsoft.com/en-us/library/39d1w2xf.aspx
在内部,ASP.NET网页背后的代码将所有字符串数据作为Unicode处理。您可以设置页面对其响应进行编码的方式,这将设置HTTP头的Content-Type部分的CharSet属性。这使浏览器能够在没有元标记的情况下确定编码,或者必须从内容推导出正确的编码。您还可以设置页面如何解释在请求中发送的信息。
最后,您可以设置ASP.NET如何解释页面本身的内容-换句话说,磁盘上物理.aspx文件的编码。如果设置了文件编码,则所有ASP页都必须使用该编码。Notepad.exe可以保存以当前system ANSI代码页、UTF8或UTF16(也称为Unicode)编码的文件。ASP.NET运行时可以区分这三种编码。物理页面文件的编码必须与@ ASP.NET编码属性中在文件中指定的编码匹配。
这篇文章也很有帮助:
http://support.microsoft.com/kb/893663
这篇"Joel-on-Software“文章绝对是必读的
请阅读所有这三篇文章,并让我们知道这是否有帮助。
发布于 2012-04-27 02:43:34
您需要HtmlEncode和HtmlDecode函数。
SQL Server可以使用ë和任何其他本地字符或“不寻常”字符,但HTML不能。这是因为有些字符在HTML中有特殊的含义。最好的例子是<或>,它们是HTML语法的基础,但还有更多。出于某种原因,ë也很特别。为了能够显示这样的字符,它们需要在传输之前作为HTML进行编码。传输装置也发送到浏览器。
因此,尽管你在浏览器中看到了ë,但你的应用程序是在一个编码版本ë中处理它的,而且它总是以包括数据库在内的这种形式。如果希望在SQL Server中以ë的形式保存ë,则需要首先对其进行解码。记住在页面上显示之前将其编码回ë。
在分别保存/显示之前,使用这些函数对所有文本进行解码/编码。它们只会转换特殊字符,而不会转换其他所有字符:
string encoded = HttpUtility.HtmlEncode("Noël")
string decoded = HttpUtility.HtmlDecode("Noël")对编码文本进行操作还有另一个重要原因-- JavaScript注入。这是对你的网站的一种攻击,目的是通过将JavaScript块放入编辑/备忘录框中,希望它们能在其他人的浏览器上执行,从而扰乱网站。如果您对从UI获得的所有文本进行编码,则这些JavaScripts将永远不会运行,因为它们将被视为文本而不是可执行代码。
https://stackoverflow.com/questions/10338058
复制相似问题