Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我应该如何存储和检索英国镑符号?_Javascript_Asp.net_Sql Server_Ajax_Character Encoding - Fatal编程技术网

Javascript 我应该如何存储和检索英国镑符号?

Javascript 我应该如何存储和检索英国镑符号?,javascript,asp.net,sql-server,ajax,character-encoding,Javascript,Asp.net,Sql Server,Ajax,Character Encoding,这是我经常遇到的问题;我总是写一些可怕的博德,但我相信一定有一个正确的方法来处理它(毕竟,想要使用英国镑符号肯定并不罕见) 问题:用户在CMS的文本字段中输入英国镑符号(£)。他们单击“保存”,表单字段值使用JavaScriptescape()函数转义,并随jQuery AJAXPOST请求一起提交。但是,在某一点上,英镑符号变成了问号(字符编码不正确?) 我不能在保存到数据库之前将符号转换为它的HTML实体,因为当检索值以显示在网站前端时,它们是HTML编码的(因此实体将按原样显示) 要彻底解

这是我经常遇到的问题;我总是写一些可怕的博德,但我相信一定有一个正确的方法来处理它(毕竟,想要使用英国镑符号肯定并不罕见)

问题:用户在CMS的文本字段中输入英国镑符号(
£
)。他们单击“保存”,表单字段值使用JavaScript
escape()
函数转义,并随jQuery AJAX
POST
请求一起提交。但是,在某一点上,英镑符号变成了问号(字符编码不正确?)

我不能在保存到数据库之前将符号转换为它的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将利用这一点。我尊重这家伙。。!!!谢谢-如果我能接受两个答案,我也会接受这一个。