Javascript 我应该如何存储和检索英国镑符号?
这是我经常遇到的问题;我总是写一些可怕的博德,但我相信一定有一个正确的方法来处理它(毕竟,想要使用英国镑符号肯定并不罕见) 问题:用户在CMS的文本字段中输入英国镑符号(Javascript 我应该如何存储和检索英国镑符号?,javascript,asp.net,sql-server,ajax,character-encoding,Javascript,Asp.net,Sql Server,Ajax,Character Encoding,这是我经常遇到的问题;我总是写一些可怕的博德,但我相信一定有一个正确的方法来处理它(毕竟,想要使用英国镑符号肯定并不罕见) 问题:用户在CMS的文本字段中输入英国镑符号(£)。他们单击“保存”,表单字段值使用JavaScriptescape()函数转义,并随jQuery AJAXPOST请求一起提交。但是,在某一点上,英镑符号变成了问号(字符编码不正确?) 我不能在保存到数据库之前将符号转换为它的HTML实体,因为当检索值以显示在网站前端时,它们是HTML编码的(因此实体将按原样显示) 要彻底解
£
)。他们单击“保存”,表单字段值使用JavaScriptescape()
函数转义,并随jQuery AJAXPOST
请求一起提交。但是,在某一点上,英镑符号变成了问号(字符编码不正确?)
我不能在保存到数据库之前将符号转换为它的HTML实体,因为当检索值以显示在网站前端时,它们是HTML编码的(因此实体将按原样显示)
要彻底解决这个问题,我应该在这里做什么?您不需要使用
退出功能。jQuery已处理编码:
$.ajax({
url: '/somepage',
data: { param1: $('#textfield').val() },
success: function() { }
});
<system.web>
<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
</system.web>
只需确保您的应用程序已设置为UTF-8编码:
$.ajax({
url: '/somepage',
data: { param1: $('#textfield').val() },
success: function() { }
});
<system.web>
<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
</system.web>
以及HTML页面:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
尝试将英国镑符号保存为£以便在html响应中显示时,它将显示英国镑符号
表单字段值使用JavaScript escape()函数转义
这是你的问题escape
是创建URL参数值的错误方法,通常不应使用。您正在查找正确执行此操作的encodeURIComponent
。escape
中的一个问题是像以下字符这样的非ASCII字符
如果您使用的是您提到的jQuery,那么您永远不需要手动创建POST数据字符串;只需传入一个类似于{x:'>}
的查找,它就会为您处理编码问题
如果您的应用程序未设置为正确处理Unicode,则存储和检索数据可能会出现更多问题。理想情况下,您应该将页面作为UTF-8提供服务,并使用Darin提到的UTF-8 IO,再加上使用NATIONAL
字符(NVARCHAR
)在SQL Server中存储Unicode字符串
我不能在保存到数据库之前将符号转换为它的HTML实体,因为当检索这些值以显示在网站前端时,它们是HTML编码的
好!!完全正确。永远不要将HTML编码的数据存储在数据库中,这是处理输出转义问题的完全错误的方法。继续用HTML编码所有要输出的文本。正如我在问题中所说的,我不能这样做,因为输出是HTML编码的。尽管没有直接回答这个问题@然而,himadri指出了另一种避免编码和解码乐趣的方法。没有必要投反对票。我想我觉得这很有用&磅;刚刚投票通过,可能有人使用Ajax和非编码或纯HTML将利用这一点。我尊重这家伙。。!!!谢谢-如果我能接受两个答案,我也会接受这一个。