sendRedirect的URL恳求中文乱码问题ITeye - 牛牛娱乐

sendRedirect的URL恳求中文乱码问题ITeye

2019年03月20日12时24分57秒 | 作者: 平安 | 标签: 中文,恳求,字符串 | 浏览: 3083

        在项目中有别的一体系恳求咱们的体系,咱们会依据恳求传入的入参数再进一步获取其它的参数,然后才sendRedirect到真实的恳求上。在测验时发现,假如获取的其它参数中有中文汉字,再sendRedirect时犯错,原因是地址栏上的中文汉字变成了乱码。

        在网上看到说经过URLDecoder.decode(request.getParameter("param1"))即可,但由于我这儿的参数比较多,且有些参数仍是JSON格局的,不能简略的对URL进行URLDecoder.decode处理(由于整个恳求中的:、{、}、//都会被编码),正确的做法是只对URL中的中文进行URLDecoder.decode处理。我的处理办法及测验如下:

import java.io.UnsupportedEncodingException;
public class Main {
 public static void main(String[] args) {
 String str = "欢迎光临我的博客iteye,网址http://bijian1013.iteye.com/";
 String resStr = getEncodeStr(str);
 System.out.println(resStr);
 private static String getEncodeStr(String str) {
 StringBuffer resultStrBuf = new StringBuffer();
 StringBuffer chineseStrBuf = new StringBuffer();
 try {
 for (int i = 0; i str.length(); i++) {
 if ((str.charAt(i) + "").getBytes().length 1) {
 chineseStrBuf.append(str.charAt(i));
 } else {
 if (chineseStrBuf.length() 0) {
 resultStrBuf.append(java.net.URLEncoder.encode(chineseStrBuf.toString(), "UTF-8"));
 chineseStrBuf.delete(0, chineseStrBuf.length());
 resultStrBuf.append(str.charAt(i));
 } catch (UnsupportedEncodingException e) {
 e.printStackTrace();
 return resultStrBuf.toString();
}

运转成果:

%E6%AC%A2%E8%BF%8E%E5%85%89%E4%B8%B4%E6%88%91%E7%9A%84%E5%8D%9A%E5%AE%A2iteye,%E7%BD%91%E5%9D%80h

 

附一:Java怎么从字符串中取出中文、Java怎么从字符串中取出中文和数字,去掉其他字符

public class Main {
 public static void main(String[] args) {
 //Java怎么从字符串中取出中文
 System.out.println("深圳2015SH".replaceAll("[\\p{ASCII}]",""));
 System.out.println("深圳2015SH".replaceAll("[\\x00-\\x7F]",""));
 //Java怎么从字符串中取出中文
 String str = "欢迎光临我的博客iteye,网址http://bijian1013.iteye.com/";
 StringBuffer sb = new StringBuffer();
 for (int i = 0; i str.length(); i++) {
 if ((str.charAt(i)+"").getBytes().length 1) {
 sb.append(str.charAt(i));
 System.out.println(sb);
 //Java怎么从字符串中取出中文
 System.out.println("欢迎光临我的博客iteye,网址http://bijian1013.iteye.com/".replaceAll("[^\\u4E00-\\u9FA5]", ""));
 System.out.println("欢迎光临我的博客iteye,网址http://bijian1013.iteye.com/".replaceAll("[\\w]", "").replaceAll("\\p{Punct}", ""));
 //Java怎么从字符串中取出中文和数字,去掉其他字符
 String str1 = "^2^3da42b3中文sae34科e技b2字符2`~!@#$%^ *()_+-=[]{};:\",. /?\\93啊";
 str1 = str1.replaceAll("[^0-9\\u4e00-\\u9fa5]", "");
 System.out.println(str1);
}

运转成果:

深圳
欢迎光临我的博客,网址
欢迎光临我的博客网址
欢迎光临我的博客,网址
23423中文34科技2字符293啊

 

附二:查看输入的字符串中是否包括中文

import java.util.regex.Matcher;
import java.util.regex.Pattern;
 * 查看输入的字符串中是否包括中文
public class Main {
 static String regEx = "[\u4e00-\u9fa5]";
 static Pattern pat = Pattern.compile(regEx);
 public static void main(String[] args) {
 String input = "Hell world!";
 System.out.println(isContainsChinese(input));//false
 input = "hello world";
 System.out.println(isContainsChinese(input));//false
 input = ",http://bijian1013.iteye.com/";
 System.out.println(isContainsChinese(input));//false
 input = ",http://bijian1013.iteye.com/";
 System.out.println(isContainsChinese(input));//false
 input = "[]%http://bijian1013.iteye.com/";
 System.out.println(isContainsChinese(input));//false
 input = "【】%http://bijian1013.iteye.com/";
 System.out.println(isContainsChinese(input));//false
 input = "我国http://bijian1013.iteye.com/";
 System.out.println(isContainsChinese(input));//true
 public static boolean isContainsChinese(String str) {
 Matcher matcher = pat.matcher(str);
 boolean flg = false;
 if (matcher.find()) {
 flg = true;
 return flg;
}

运转成果:

false
false
false
false
false
false
true
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表牛牛娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1
  • 2

    第02章 根底中心ITeye

    目标,根底,中心
  • 3
  • 4
  • 5

    Java中字符串的使用ITeye

    字符串,字符,比较
  • 6
  • 7

    UTLITeye

    数据,目录,文件
  • 8
  • 9
  • 10

    java与函数式编程ITeye

    函数,编程,一些