XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)

XMLHTTP 是浏览器内置的一种 HTTP 请求方式,可以通过 JavaScript 来进行调用发送 HTTP 请求,从而得到响应数据。在使用 XMLHTTP 时,常常会出现乱码的现象。有时是因为发送请求的页面本身的编码格式设置错误,使得接收到的数据乱码。也有可能是接收到数据中文字符的编码格式与前端页面编码格式不一致导致。

针对这种情况,我们可以采取一些措施来解决 XMLHTTP 中文乱码问题。下面分别从前端页面编码格式设置、XMLHTTP 编码格式设置、以及后端页面编码格式设置三个方面来讲解具体的解决方法:

前端页面编码格式设置

前端页面编码格式设置是解决 XMLHTTP 乱码的关键步骤,因此它非常重要。通常我们可以设置 meta 标签,来告诉浏览器前端页面的编码格式。

meta 标签有两种方式,一种是在 head 标签内使用 charset 属性,指定编码格式如下所示:

<head>
  <meta charset="UTF-8">
</head>

还有一种方式,在 http 响应头上设置编码格式,如下所示:

res.setHeader('Content-Type','text/html; charset=utf-8');

注意:只有一种方式设置就够了,如果同时使用两种方式可能会出现不可预知的问题。

XMLHTTP 编码格式设置

XMLHTTP 乱码的另一种情况是因为编码格式不一致导致服务端返回的数据是乱码,这时我们需要设置 XMLHTTP 的编码格式以告诉浏览器如何解码响应数据中的消息体。

XMLHTTP 的编码格式设置有两个地方,一个是请求头,一个是响应头。

在请求头上设置编码格式:

let xhr = new XMLHttpRequest();
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');

在响应头上设置编码格式:

header("Content-type:text/html;charset=utf-8");

后端页面编码格式设置

后端返回的数据也需要设置编码格式,确保浏览器能够正确解码和显示返回的数据。

PHP 中设置方法如下:

header("Content-type:text/html;charset=utf-8");
echo "PHP 返回的数据";

Node.js 中设置方法如下:

res.setHeader('Content-Type','text/html; charset=utf-8');
res.write('Node.js 返回的数据');

综上所述,针对 XMLHTTP 乱码,我们需要综合考虑前端页面、XMLHTTP 请求头、以及后端页面的编码格式设置。只有这三个方面都设置正确,才能有效减少或消除乱码的问题。

下面给出两个针对 XMLHTTP 乱码的示例:

示例一:前端页面编码格式设置

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>XMLHTTP UTF-8 编码/解码示例</title>
</head>
<body>
  <button onclick="sendRequest()">发送请求</button>
  <div id="response"></div>

  <script>
    function sendRequest() {
      let xhr = new XMLHttpRequest();
      xhr.onreadystatechange = function() {
        if (this.readyState === 4 && this.status === 200) {
          document.querySelector("#response").innerHTML = this.responseText;
        }
      };
      xhr.open("GET","http://localhost:3000/api/getData",true);
      xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
      xhr.send();
    }
  </script>
</body>
</html>
<?php
  header("Content-type:text/html;charset=utf-8");
  echo "PHP 返回的数据";
?>

示例二:前端页面和后端页面编码格式设置

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>XMLHTTP GB2312 编码/解码示例</title>
</head>
<body>
  <button onclick="sendRequest()">发送请求</button>
  <div id="response"></div>

  <script>
    function sendRequest() {
      let xhr = new XMLHttpRequest();
      xhr.onreadystatechange = function() {
        if (this.readyState === 4 && this.status === 200) {
          document.querySelector("#response").innerHTML = this.responseText;
        }
      };
      xhr.open("GET","http://localhost:3000/api/getData",true);
      xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gb2312");
      xhr.send();
    }
  </script>
</body>
</html>
<?php
  header("Content-type:text/html;charset=gb2312");
  echo iconv("UTF-8", "gb2312", "PHP 返回的数据");
?>

上面例子就是演示了采取不同设置来验证 XMLHTTP 编码是如何表现的,你可以在这个基础上继续实践。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码) - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 日常收集JS邮箱验证正则表达式

    当我们在开发 web 应用时,经常会有需要验证邮箱地址的情况,其中验证方法之一就是使用正则表达式。下面,我们来讲解一个较为完整的日常收集JS邮箱验证正则表达式的攻略。 确定目标 在进行任何一项技术攻略时,第一步都是要明确目标。对于本文所讲的“日常收集JS邮箱验证正则表达式”的攻略,其目标是收集常用的 JS 邮箱验证正则表达式并进行整合。 收集来源 在确定了目…

    JavaScript 2023年6月10日
    00
  • 使用jsonp完美解决跨域问题

    使用 JSONP (JSON with Padding) 是一种解决跨域问题的常见方式。下面是使用 JSONP 完美解决跨域问题的攻略。 什么是JSONP(跨域协议) JSONP 是利用script标签跨域的一个技巧。简单地说,就是通过动态创建 script 标签,向其他域请求数据,该域返回数据时会调用一个 callback 函数,一般在前端代码中定义。 使…

    JavaScript 2023年5月27日
    00
  • vue element-ui实现动态面包屑导航

    一、概述 面包屑导航是指网站或应用程序主导航之外的一种辅助性导航元素。随着单页应用(SPA)的普及,动态面包屑导航也变得越来越常见。Vue Element-UI提供了很好的组件支持,可以轻松实现动态面包屑导航的功能。 二、步骤 安装Vue和Element-UI 在Vue Element-UI中使用动态面包屑导航功能,需要先安装Vue和Element-UI。可…

    JavaScript 2023年6月10日
    00
  • js 判断上传文件大小及格式代码

    下面是关于 JS 判断上传文件大小及格式的完整攻略。 判断上传文件大小 如果想在上传文件时限制上传文件大小,可以使用以下代码进行判断: const fileSizeLimit = 1024 * 1024; // 限制 1MB const file = document.querySelector(‘input[type="file"]’)…

    JavaScript 2023年5月27日
    00
  • javascript 去字符串空格终极版(支持utf8)

    我们来详细讲解一下 “javascript 去字符串空格终极版(支持utf8)” 的完整攻略。 标准化题意 首先,我们需要将题意进行标准化,确定需求以及细节。 题目要求我们编写一个函数,来去除字符串中的空格。这个空格不仅包括普通的空格,也包括 TAB 和半角全角空格,且需要支持 utf8 编码。 解决方案 接下来,我们来讲解一下具体的解决方案。 我们可以使用…

    JavaScript 2023年6月1日
    00
  • 深入浅析JS Function()构造函数

    深入浅析JS Function()构造函数 简介 Function()构造函数是JavaScript中的一个重要对象(Object),它可以用来定义和创建函数。由于JavaScript中的函数是一等公民(First-Class Citizen),因此Function()构造函数在JavaScript语言中具有非常重要的意义,我们可以使用它来定义匿名函数、闭包…

    JavaScript 2023年5月27日
    00
  • Android编程实现webview执行loadUrl时隐藏键盘的workround效果

    Android中的WebView可以用于加载网页,但在使用时,可能会出现键盘遮挡了 WebView 界面的问题,这就需要我们通过编程实现隐藏键盘的效果。下面将提供一些实现方法。 方法一:使用InputMethodManager 在WebView中执行loadUrl()时,可以通过InputMethodManager隐藏软键盘。代码示例如下: InputMet…

    JavaScript 2023年5月28日
    00
  • javascript实现视频弹幕效果(两个版本)

    Javascript实现视频弹幕效果攻略 1. 引言 弹幕是指用户在观看视频时,能够发送一些评论消息,这些评论消息会以滚动、飘动、静态等形式浮现在视频画面上方。在现在各大视频平台上,弹幕已成为视频观看的一种重要要素。 本篇攻略将从两个版本的弹幕效果的具体实现入手,来详细讲解JavaScript实现弹幕效果的过程。 2. 版本一 2.1 函数封装 本案例中主要…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部