Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.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
Php 使用Javascript/jQuery复制带有ISO-8859-1字符集的HTML表单POST_Php_Javascript_Forms_Post_Character Encoding - Fatal编程技术网

Php 使用Javascript/jQuery复制带有ISO-8859-1字符集的HTML表单POST

Php 使用Javascript/jQuery复制带有ISO-8859-1字符集的HTML表单POST,php,javascript,forms,post,character-encoding,Php,Javascript,Forms,Post,Character Encoding,我的PHP web应用程序正在ISO-8859-1编码上运行。当我将带有accept charset=“ISO-8859-1”的HTML表单发布到PHP服务器时,这就是我在服务器端收到的内容 a。原始形式的ASCII字符 b。可在ISO-8859-1中以原始形式表示的特殊字符 c。无法在ISO-8859-1中表示的转换为HTML实体的特殊字符 所有数据均作为正确的ISO-8859-1编码字符接收。我想用JavaScript或jQuery复制完全相同的行为。我尝试过的所有解决方案最终都将所有特殊字

我的PHP web应用程序正在ISO-8859-1编码上运行。当我将带有accept charset=“ISO-8859-1”的HTML表单发布到PHP服务器时,这就是我在服务器端收到的内容

a。原始形式的ASCII字符

b。可在ISO-8859-1中以原始形式表示的特殊字符

c。无法在ISO-8859-1中表示的转换为HTML实体的特殊字符

所有数据均作为正确的ISO-8859-1编码字符接收。我想用JavaScript或jQuery复制完全相同的行为。我尝试过的所有解决方案最终都将所有特殊字符作为双编码字符发送到PHP文件,我必须对它们进行utf8_解码

我已制定了如下工作解决方案:

a。将不支持的特殊字符转换为HTML实体

b。使用XMLHttpRequest/ActiveXObject发送JavaScript AJAX post请求。为此,我必须对数据进行“encodeURIComponent()”

c。在服务器上接收post数据并使用“utf8_decode()”,因为“encodeURIComponent()”将特殊字符编码为UTF-8

我想要一个JavaScript解决方案,确保从服务器端的POST接收到正确的ISO-8859-1编码数据,这样我就不必执行“utf8_decode()”。换句话说,我希望JavaScript解决方案使用accept charset=“ISO-8859-1”精确复制表单行为


谢谢你

据我所知,javascript中没有可靠的方法可以做到这一点。字符编码不是Javascript的强项,我相信这主要是因为它将这些领域留给其他人来决定,比如描述内容的HTML、进行解析的服务器语言或提供环境的Web服务器

就JS中的任何URI编码/解码函数而言,它都是UTF-8,并且是内置的,就像在中一样,没有可以传递的参数来覆盖它

您还可以尝试覆盖MimeType并指定一个新类型,如:

var xhr = new XMLHttpRequest();
if (xhr.overrideMimeType) {
    xhr.overrideMimeType('application/x-javascript; charset=ISO-8859-1');
}

不确定它有多稳定,但这是您可能希望探索的一个方向。

我的PHP web应用程序正在以ISO-8859-1编码运行-在21世纪?为什么@因为它不是21世纪的应用程序:)。我是一名开发者,当然是我的客户所有。该应用程序的传播范围如此之广,以至于将代码,尤其是拥有数十亿条记录的数据库迁移到UTF-8并不是第一个选择。它不会改变任何东西。。谢谢你的支持。至少现在我不是唯一一个说这不能通过JavaScript实现的人。