url传递中文字符,特殊危险字符的解决方案(仅供参考)urldecode、base64_encode
web开发的过程中,当我们需要在url中传递中文字符或是其它的html等特殊字符时,似乎总会碰到各种各样的小问题,因为不同的浏览器对他们的编码又不一样。对于中文,一般的做法是:
把这些文本字符串传给url之前,先进行urlencode($text)一下。
但是对于一些很“危险”的字符,比如说html字符,甚至是SQL注入相关的字符,如果很明显的传给系统,出于安全考虑,系统一般都会把它们过滤掉的。
那么,如果我们需要保留这些危险字符,不被过滤,该这么办呢?
我想到的办法是先给它们 base64_encode($text) 编码,到服务端时,又给它们 base64_decode($text) 解码,
貌似很完美,但是在使用的过程中又遇到一个问题,base64_encode 编码后的字符串中含有 "/", "+", "=" 等字符,
这些字符在url编码中又是特殊字符,比如 "+" ,它就表示 “空格”,但是不同的浏览器对“空格”的编码又不一样,有的是用“+”表示,有的是用“20%”表示,也就是说,让这些base64_encode编码后的字符串在url中传递,用不同的浏览器去浏览时,服务端得到值不一样。
于是乎,想到了一个折中办法,先将这些base64编码后的特殊字符替换掉,到服务端后,又替换回来:
function base_encode($str) { $src = array("/","+","="); $dist = array("_a","_b","_c"); $old = base64_encode($str); $new = str_replace($src,$dist,$old); return $new; } function base_decode($str) { $src = array("_a","_b","_c"); $dist = array("/","+","="); $old = str_replace($src,$dist,$str); $new = base64_decode($old); return $new; }
下面是在浏览器中得到的效果
xOO6w6Osuf65_aiy_atL_b00Ke5_b8jnus6ho6GjoaM_c
呵呵,看看效果如何。。。
您可能感兴趣的文章
- PHP解决网址URL编码问题的函数urlencode()、urldecode()、rawurlencode()、rawurldecode()
- js限制只能输入英文字母和数字,不能输入中文和其他特殊字符的办法
- php打造属于自己的MVC框架简单案例,提供思路,仅供参考
- AJAX中POST或GET传递中文字符乱码的解决办法
- mysql命令更改表结构:添加、删除、修改字段、调整字段顺序
- 在php中分别使用curl的post提交数据的方法和get获取网页数据的方法总结
- js 修改url中某个指定的参数的值
- 复选框(checkbox)和单选框(radio)与文字水平垂直居中对齐的解决方法

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

오류의 원인은 urllib3 라이브러리의 예외 유형인 NameResolutionError(self.host,self,e)frome입니다. 이 오류의 원인은 DNS 확인에 실패했기 때문입니다. 해결을 찾을 수 없습니다. 이는 입력한 URL 주소가 정확하지 않거나 DNS 서버를 일시적으로 사용할 수 없기 때문에 발생할 수 있습니다. 이 오류를 해결하는 방법 이 오류를 해결하는 방법은 여러 가지가 있습니다. 입력한 URL 주소가 올바른지 확인하고 액세스할 수 있는지 확인하십시오. DNS 서버를 사용할 수 있는지 확인하십시오. 명령줄에서 "ping" 명령을 사용해 볼 수 있습니다. DNS 서버를 사용할 수 있는지 테스트하려면 프록시 뒤에 있는 경우 호스트 이름 대신 IP 주소를 사용하여 웹사이트에 액세스해 보세요.

PHP 기능 소개 - get_headers(): URL의 응답 헤더 정보 얻기 개요: PHP 개발에서는 웹 페이지나 원격 리소스의 응답 헤더 정보를 얻어야 하는 경우가 많습니다. PHP 함수 get_headers()를 사용하면 대상 URL의 응답 헤더 정보를 쉽게 얻고 이를 배열 형식으로 반환할 수 있습니다. 이 기사에서는 get_headers() 함수의 사용법을 소개하고 관련 코드 예제를 제공합니다. get_headers() 함수 사용법: get_header

Velodrome 모델은 veCRV에서 영감을 얻었으며 유동성 공급자(LP), 토큰 보유자 및 유동성이 필요한 프로젝트를 포함하여 DEX의 세 가지 주요 참여자 간에 탁월한 일관성을 달성하는 것을 목표로 합니다. 그러나 DeFi 공간의 많은 플레이어는 여전히 근본적인 이유를 완전히 이해하지 못하고 있습니다. 이 글을 깊이 있게 읽으면, 이 딜레마에서 벗어나 그 근본 원인을 파악할 수 있을 것입니다. 오늘은 DeFi 분야의 실제 성공 사례인 Velodrome/Aerodrome에 대해 논의하겠습니다. 이 기사에서는 두 모델을 비교하고 Velodrome이 veCRV 모델을 어떻게 개선하고 이러한 작은 차이가 어떤 중요한 영향을 미치는지 설명합니다. 먼저 말씀드리자면

차이점: 1. 정의가 다릅니다. url은 균일한 리소스 위치 지정자이고 html은 하이퍼텍스트 마크업 언어입니다. 2. html에는 여러 개의 URL이 있을 수 있지만 하나의 url에는 단 하나의 html 페이지만 존재할 수 있습니다. 웹 페이지이고 url은 웹 사이트 주소를 나타냅니다.

요즘에는 게임을 좋아하는 많은 Windows 사용자들이 Steam 클라이언트에 접속하여 좋은 게임을 검색하고 다운로드하여 플레이할 수 있습니다. 그러나 많은 사용자의 프로필이 정확히 동일한 이름을 가질 수 있으므로 프로필을 찾거나 Steam 프로필을 다른 제3자 계정에 연결하거나 Steam 포럼에 가입하여 콘텐츠를 공유하기가 어렵습니다. 프로필에는 고유한 17자리 ID가 할당되며, 이는 동일하게 유지되며 사용자가 언제든지 변경할 수 없는 반면, 사용자 이름이나 맞춤 URL은 변경할 수 있습니다. 그럼에도 불구하고 일부 사용자는 자신의 Steamid를 모르므로 이를 아는 것이 중요합니다. 계정의 Steamid를 찾는 방법을 모르더라도 당황하지 마세요. 이 기사에서는

Golang 프로그래밍에서는 입력이 합법적인 base64 문자열인지 확인하기 위해 정규식을 사용하는 것이 상대적으로 일반적인 요구 사항입니다. 개발자의 경우 정규식을 사용하여 사용자 입력이 올바른지 빠르고 정확하게 확인할 수 있습니다. 이 기사에서는 Golang에서 정규식을 사용하여 입력이 합법적인 base64 문자열인지 확인하는 방법을 소개합니다. 기본 구문으로 시작하기 Golang에서 정규식을 사용하려면 "regexp" 라이브러리를 사용해야 합니다. 이 라이브러리는 "컴파일" 및 "

Java 프로그래밍에서는 전송을 위해 바이너리 데이터를 텍스트 형식으로 변환해야 하는 경우가 많으며 Base64 인코딩이 일반적으로 사용되는 변환 방법입니다. Base64는 3바이트의 데이터를 4바이트의 텍스트 데이터로 변환합니다. 텍스트 데이터는 인쇄 가능한 문자만 포함하므로 이메일 및 HTTP 요청 메시지와 같은 프로토콜로 전송할 수 있습니다. Java는 Base64 인코딩 및 디코딩 API를 제공하므로 데이터를 쉽게 변환할 수 있습니다. 이 기사에서는 Java에서의 사용 방법을 소개합니다.

url을 사용하여 java.net.URLDecoder.decode(url, 디코딩 형식) 클래스 decoder.decoding 인코딩 및 디코딩 방법을 인코딩 및 디코딩합니다. 일반 문자열로 변환하는 URLEncoder.decode(url, 인코딩 형식)는 일반 문자열을 지정된 형식의 문자열로 변환합니다. packagecom.zixue.springbootmybatis.test;importjava.io.UnsupportedEncodingException;importjava.net.URLDecoder;importjava.net. URL인코더
