我的编程空间,编程开发者的网络收藏夹
学习永远不晚

URL地址中的中文乱码怎么解决

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

URL地址中的中文乱码怎么解决

本篇内容主要讲解“URL地址中的中文乱码怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“URL地址中的中文乱码怎么解决”吧!

  问题的引出
   在Restful的服务设计中,查询某些信息的时候,一般的URL地址设计为: get /basic/service? keyword=历史 , 之类的URL地址。 但是,在实际的开发和使用中,确是有乱码情况的发生,在后台的读取keyword信息为乱码,无法正确读取。
2. 乱码是如何产生的?
   由于我们利用URL传递参数这种方式是依赖与浏览器环境中的,也就是说URL及URL中包含的各个key=value格式的传递参数键值对参数是在浏览器地址栏中的处理原理处理相应编码后传递至后台进行解码的。
  由于我们没有进行任何处理,此时javascript请求URL并传参数存在中文时(也就是说输入框中输入中文时),对URL的中文参数进行编码是按照浏览器机制进行编码的。此时编码存在乱码问题。
3. 初次编码, javascript中利用encodeURI()方法进行编码。
   利用encodeURI()在javascript中对中文URL参数进行编码时,“测试”二字会被转换为“%E6%B5%8B%E8%AF%95”。 但是问题依然存在。原因是在编码后的字符串信息,浏览器机制会认为“%”是一个转义字符,浏览器会把地址栏URL中的传递的已转换参数“%”与“%”之间 的已转义字符进行处理传递到后台中。这样会造成与实际经过encodeURI()编码后的URL不符,因为浏览器误认为“%”是转义字符字符了,它并未将 “%”认为是个普通字符。
4. 二次编码,使用encodeURI
   操作: 

1encodeURI(encodeURI("/order?name=" + name));

   处理后的URL不在是通过一次 encodeURI()转换后的字符串”%E6%B5%8B%E8%AF%95“,而是经过上一步两层encodeURI()处理URL处理后的字符 串”%25E6%B255%258B%25E8%AF%2595“,通过再次编码原有被浏览起解析为转义字符的”%“被再次编码,转换成了普通字符 转”%25“。 
     此时前端javascript代码对带有中文的URL编码已经完成,并通过URL传递参数的方式传递到后台等待处理,Action获取到正常转换切无乱码 的参数为”%25E6%B255%258B%25E8%AF%2595“,此字符串对应的中文正是我们输入的”测试“二字。
5. 后台如何正确解析中文字符信息?
  进入后台的信息,在经过二次encodeURI()之后,直接读取是无法后去正确的信息的。 需要继续如下处理:

1URLDecoder.decode("chinese string","UTF-8")

      URLDecoder的decode(String str,String ecn)方法有两个参数,第一个参数为待解码的字符串,第二个参数为解码时的对应编码。
6.   encodeURI, encodeURIComponent, escape
    6.1  escape()函数
    escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
   返回值:已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。
   说明 :该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。其他所有的字符都会被转义序列替换。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字 符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。不会被此方法编码的字符: @ * / +
  6.2 encodeURI() 方法
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + '
 6.3  encodeURIComponent() 方法
    把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。
不会被此方法编码的字符:! * ( ) '
    因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用 escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者 encodeURIComponent。
7. 另一种处理URL的中文乱码方案
    请求端的中字符有encodeURI进行一次转码,如:

1var url="/ajax?name="+encodeURI(name);

   服务器端代码:

1name=new String(name.getBytes("iso8859-1"),"UTF-8");

注: name为获得的字符串,iso8859-1为项目的默认字符编码,如果为中文编码gbk,gb2312等则不用这一步进行处理.
  分析: 经过程序验证,结果可行的。 由此可知,浏览器本身默认的编码方式是iso8859-1的方式,即使使用了encodeURI进行了utf-8编码处理,主要的字符串内容,比如 ascii字符和可见字符都还是基于iso8859-1浏览器自身的字符。原因就是这些字符在编码上和UTF-8字符串是重合的。而encodeURI之 类的转义函数主要解决,特殊字符%,/之类的字符的转义问题。

到此,相信大家对“URL地址中的中文乱码怎么解决”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

URL地址中的中文乱码怎么解决

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

URL地址中的中文乱码怎么解决

本篇内容主要讲解“URL地址中的中文乱码怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“URL地址中的中文乱码怎么解决”吧!1. 问题的引出 在Restful的服务设计中,查询某些信
2023-06-02

jquery中文地址乱码

jQuery是一款非常流行的JavaScript库,它可以帮助开发人员更加方便地操作Web页面。然而,当我们在使用jQuery时,常常会遇到中文地址乱码的问题,这给我们的开发带来了很大的困难。本文将会讨论这个问题,并提出解决方法。首先,我们来看一下为什么会出现中文地址乱码问题。其实,这个问题的本质是浏览器对URL进行编码时的差异性。在W3C规范中,URL只能包含英文字母、数字和
2023-05-24

javascript中url中文乱码如何解决

javascript中url中文乱码如何解决?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。JavaScript的特点1.JavaScript主要用来向HTML页
2023-06-14

php怎么解决url中文传参乱码问题

php解决url中文传参乱码问题的方法:1、使用urlencode和urldecode函数进行转码;2、通过“iconv("gb2312","UTF-8",$gonghui);”方式转码。
2018-12-07

java中url传中文时乱码的解决方法

Java中URL传中文时乱码的问题相信不少朋友都遇到过,最近就遇到一个问题,就是在Action当中把一条中文信息绑定在URL的后面,ActionForward到别一个页面时,用reqeust.getParameter取出是出现乱码的问题。推荐:java视频教程
java中url传中文时乱码的解决方法
2015-07-15

java url中文乱码怎么办

url中文乱码 java1.将字符串转码:newString(“xxxxx”.getBytes(“iso-8859-1”),”utf-8”)这种转码方式有很大的弊端,因为它是使用指定的字符集将此String编码为 byte 序列,并将结果存储到一个新的byte
java url中文乱码怎么办
2021-11-14

java中url传中文时乱码解决方法

Java中URL传中文时乱码的问题相信不少朋友都遇到过,最近就遇到一个问题,就是在Action当中把一条中文信息绑定在URL的后面,ActionForward到别一个页面时,用reqeust.getParameter取出是出现乱码的问题。解决办法:1、对要进行
java中url传中文时乱码解决方法
2017-11-22

如何解决wordpress URL中文乱码问题

这篇文章主要介绍了如何解决wordpress URL中文乱码问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。wordpress中跳转URL中文部分全是乱码如:解决办法:ap
2023-06-21

php url参数中文乱码如何解决

这篇“php url参数中文乱码如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php url参数中文乱码如何解决”文
2023-07-04

java中url乱码解决方法

java中url乱码解决方法:(推荐:java视频教程)1、将字符串转码:newString(“xxxxx”.getBytes(“iso-8859-1”),”utf-8”)这种转码方式有很大的弊端,因为它是使用指定的字符集将此String编码为 byte 序列
java中url乱码解决方法
2017-05-02

java中中文乱码怎么解决?

java中中文乱码解决方法:一、设置工作空间的编码1、编辑器的编码会影响到所有的项目中的字符的显示,可以说是作用最为广泛的设置,每一个项目都会受到这个设置的影响。点击菜单栏中的窗口(Window)— —选项(Preferences)。2、点击常规(Genera
java中中文乱码怎么解决?
2022-01-09

php中文乱码怎么解决

1、设置字符集在PHP文件中添加以下代码,设置字符集为UTF-8。header(Content-Type:text/html;charset=utf-8)。2、设置数据库字符集在连接数据库时,设置数据库字符集为UTF-8,可以通过以下代码实
2023-05-13

J2EE中文乱码怎么解决

这篇文章主要介绍了J2EE中文乱码怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇J2EE中文乱码怎么解决文章都会有所收获,下面我们一起来看看吧。import java.io.IOException;im
2023-06-03

github中文乱码怎么解决

这篇文章主要介绍“github中文乱码怎么解决”,在日常操作中,相信很多人在github中文乱码怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”github中文乱码怎么解决”的疑惑有所帮助!接下来,请跟
2023-07-05

Matplotlib中文乱码怎么解决

这篇文章主要介绍了Matplotlib中文乱码怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Matplotlib中文乱码怎么解决文章都会有所收获,下面我们一起来看看吧。Matplotlib中文乱码当不对
2023-07-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录