参考:http://blog.csdn.net/u012364841/article/details/41964477

问题:

在读取查看类编译位置的时候,出现编码的问题,原因是在读取的时候,java自动转为Base64的编码形式。

输出编码如下:

/D:/JAVA%ef%bc%88%e5%b8%85%e5%b0%8f%e5%8b%87%ef%bc%89/java%e7%ab%8b%e6%95%8f%e8%80%81%e5%b8%88/java%20%e5%b7%a5%e4%bd%9c%e7%a9%ba%e9%97%b4/Warehouse/build/classes/


代码如下:

package com.lnsf.warehose.service.test2;
import static org.junit.Assert.*;
import java.io.UnsupportedEncodingException;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.lnsf.warehose.service.test.TestInterface0923;
/**
* @author 渴望飞的鱼 
* @version 创建时间:2017年9月23日 下午1:49:01
* @introduction
*/

public class TestSpringIoC {
public TestSpringIoC() throws UnsupportedEncodingException{
    //查看编译位置
String str=TestSpringIoC.class.getClass().getResource("/").getPath();

 //没有处理过的编码形式
System.out.println(str); 
System.out.println("查看编译位置:"+java.net.URLDecoder.decode(str,"utf-8"));
}
@Test
public void test() {
//springioc.xml在src路径下时候
//ApplicationContext context = new ClassPathXmlApplicationContext("springioc.xml");
ApplicationContext context = new ClassPathXmlApplicationContext("com/lnsf/warehose/service/test/springioc.xml");
// ApplicationContext  context=new ClassPathXmlApplicationContext("classpath:/*.xml");
TestInterface0923 TestInterface0923=(com.lnsf.warehose.service.test.TestInterface0923) context.getBean("TestInterface0923");
System.out.println(TestInterface0923.getString("嘻嘻,依赖注入啊"));
}
}

运行结果如下:

/D:/JAVA%ef%bc%88%e5%b8%85%e5%b0%8f%e5%8b%87%ef%bc%89/java%e7%ab%8b%e6%95%8f%e8%80%81%e5%b8%88/java%20%e5%b7%a5%e4%bd%9c%e7%a9%ba%e9%97%b4/Warehouse/build/classes/
查看编译位置:/D:/JAVA(帅小勇)/java立敏老师/java 工作空间/Warehouse/build/classes/
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
testInterface0923Impl  get the string is: 嘻嘻,依赖注入啊 .

处理方法:

1.可以API中方法用encode和decode方法即可实现转换并输出。

System.out.println(java.net.URLEncoder.encode("您好","utf-8"));
System.out.println(java.net.URLDecoder.decode("%E6%82%A8%E5%A5%BD","utf-8"));

2.通过URLtoUTF8类中的toUtf8String和unescape两个方法,分别实现汉字转成URL编码和URL编码转成汉字的功能。在main()方法更改参数即可,完成测试转换。(此方法转自:http://www.jb51.net/article/42495.htm)

package test;

public class URLtoUTF8 {
    //转换为%E4%BD%A0形式
    public static String toUtf8String(String s) {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (c >= 0 && c <= 255) {
                sb.append(c);
            } else {
                byte[] b;
                try {
                    b = String.valueOf(c).getBytes("utf-8");
                } catch (Exception ex) {
                    System.out.println(ex);
                    b = new byte[0];
                }
                for (int j = 0; j < b.length; j++) {
                    int k = b[j];
                    if (k < 0)
                        k += 256;
                    sb.append("%" + Integer.toHexString(k).toUpperCase());
                }
            }
        }
        return sb.toString();
    }

    //将%E4%BD%A0转换为汉字 
    public static String unescape(String s) {
        StringBuffer sbuf = new StringBuffer();
        int l = s.length();
        int ch = -1;
        int b, sumb = 0;
        for (int i = 0, more = -1; i < l; i++) {
            /* Get next byte b from URL segment s */
            switch (ch = s.charAt(i)) {
            case '%':
                ch = s.charAt(++i);
                int hb = (Character.isDigit((char) ch) ? ch - '0'
                        : 10 + Character.toLowerCase((char) ch) - 'a') & 0xF;
                ch = s.charAt(++i);
                int lb = (Character.isDigit((char) ch) ? ch - '0'
                        : 10 + Character.toLowerCase((char) ch) - 'a') & 0xF;
                b = (hb << 4) | lb;
                break;
            case '+':
                b = ' ';
                break;
            default:
                b = ch;
            }
            /* Decode byte b as UTF-8, sumb collects incomplete chars */
            if ((b & 0xc0) == 0x80) { // 10xxxxxx (continuation byte)   
                sumb = (sumb << 6) | (b & 0x3f); // Add 6 bits to sumb   
                if (--more == 0)
                    sbuf.append((char) sumb); // Add char to sbuf   
            } else if ((b & 0x80) == 0x00) { // 0xxxxxxx (yields 7 bits)   
                sbuf.append((char) b); // Store in sbuf   
            } else if ((b & 0xe0) == 0xc0) { // 110xxxxx (yields 5 bits)   
                sumb = b & 0x1f;
                more = 1; // Expect 1 more byte   
            } else if ((b & 0xf0) == 0xe0) { // 1110xxxx (yields 4 bits)   
                sumb = b & 0x0f;
                more = 2; // Expect 2 more bytes   
            } else if ((b & 0xf8) == 0xf0) { // 11110xxx (yields 3 bits)   
                sumb = b & 0x07;
                more = 3; // Expect 3 more bytes   
            } else if ((b & 0xfc) == 0xf8) { // 111110xx (yields 2 bits)   
                sumb = b & 0x03;
                more = 4; // Expect 4 more bytes   
            } else /*if ((b & 0xfe) == 0xfc)*/{ // 1111110x (yields 1 bit)   
                sumb = b & 0x01;
                more = 5; // Expect 5 more bytes   
            }
            /* We don't test if the UTF-8 encoding is well-formed */
        }
        return sbuf.toString();
    }

public static void main(String[] args){
        System.out.println(URLtoUTF8.toUtf8String("你"));
        System.out.println(URLtoUTF8.unescape("%E4%BD%A0%20%E5%A5%BD"));

}
}

示例结果:

%E4%BD%A0
你 好

java实现url编码与中文的互相转换相关推荐

  1. Java对URL中的中文进行UrlEncode转码

    Java对URL中的中文进行UrlEncode urleocode只是为了url中一些非ascii字符,可以正确无误的被传输. 而且有的含有中文或者特殊字符的url不能被识别,因此需要进行Encode ...

  2. c#实现UrlDecode效果,URL编码转中文

    在c#中使URL编码转中文,常用的一种说法是使用HttpUtility.UrlDecode进行处理,而且这是主流说法. 但是,HttpUtility.UrlDecode使用前提是引用System.We ...

  3. java 把URL中的中文转换成utf-8编码

    private static final String QUERY = "餐饮"; String sr = URLEncoder.encode(QUERY); System.out ...

  4. java jdbc url编码_java中jdbc/sql出现编码问题

    com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column '???è??é"?è??' in 'field li ...

  5. java http url 编码_Java中的HTTP URL地址编码

    java.net.URI类可以帮助;在URL的文档中找到 Note, the URI class does perform escaping of its component fields in ce ...

  6. java实现字符串中的中文繁简转换

    1.使用的jar包heaven-0.1.129.jar.nlp-common-0.0.3.jar.opencc4j-1.6.0.jar 2.写成工具方法 /*** 转换字符串中的繁体中文为简体中文*/ ...

  7. URL编码 - Java加密与安全

    JAVA的URL编码我们先看看什么是编码?ASCII码就是一种编码,A的编码是16进制的0x41,字母B的编码是0x42,而中文的中是用Unicode编码,中就是0x4e2d,用UTF-8编码,需要3 ...

  8. java 中文 转义_java下载url路径包含中文需要转义的操作

    大家看这个url: http://127.0.0.1:9997/file/江苏省地震应急预案(二级).docx 应为url路径中有中文没有转义,输入流报错 The valid characters a ...

  9. java utf8 简繁转换 类库_在Java中进行中文繁体简体转换,基于OpenCC(Open Chinese Convert)方案...

    一.OpenCC介绍 OpenCC (Open Chinese Convert,开放中文转换) 是一个用于中文简繁转换的开源项目,支持词汇级别的转换.异体字转换和地区习惯用词转换(中国大陆.台湾.香港 ...

  10. URL编码的Unity实现

    URL中有一些符号是不能被解析的,所以我们需要进行编码比如: Ra0y3xIam3yX7tURdbGrKnOzahGe74pR6fXMUH2fR54= 这个里面的等号一般是有特殊意义的,编码后变成这个 ...

最新文章

  1. Windows server 2012 AD架构 试验 系列22 -ADAC与PowerShell History
  2. Mysql8 NDB集群二进制方式免安装配置图解
  3. hadoop学习日志
  4. java零碎要点009---java实现服务器心跳机制,TCP握手
  5. tplink 2.4g弱信号剔除_解疑答惑 | 使用无线路由器上网,应使用2.4G频段还是5G频段?...
  6. LeetCode199. Binary Tree Right Side View
  7. 【NLPCC 2020】Call for Participation: Shared Tasks in NLPCC 2020
  8. 关于“绞刑架和职业发展”问题带来的思考
  9. 数字电子技术期末考试思维导图
  10. 8位串行加法器 计算机组成原理,安尧-2013434158-计算机组成原理8位加法器实验报告.doc...
  11. 熊猫烧香源码分析_熊猫体育分析入门
  12. 问卷调查 java_java网络问卷调查系统
  13. 傻瓜教学——什么是字符串?字符串有哪些概念?
  14. python语言的开题报告怎么写_开题报告怎么写
  15. 题223.2022寒假天梯赛训练-7-12 清点代码库 (25 分)
  16. 电路实验——实验三 叠加原理
  17. 常用的keytool命令
  18. 《涨知识啦30》-太阳能电池基本工作原理
  19. 计算机识别技术检测交通标志,基于计算机视觉的交通标志检测与识别算法研究...
  20. 2013年浙江大学计算机专业录取名单,浙大计算机录取名单

热门文章

  1. 《Head First Android》读后感,电子书PDF下载
  2. 山西大学量子计算机,关于量子力学与量子计算机
  3. qq旋风离线服务器维护,如何进入qq旋风离线空间
  4. 用acdsee制作html,ACDSee 制作网络像册
  5. acdsee ultimate 2020 特别版 v13.0附安装教程
  6. 我给来大家介绍一下秉承WEB2.0理念的无书网(nonobo.com)的近况
  7. word文件转pdf转换器11.0注册码
  8. 使用GDI绘制一个类似进度条的控件(1)
  9. html小说站源码,读取本地HTML的小说阅读器应用源码项目
  10. 清华大学计算机学院教授简介,清华大学计算机科学与技术系导师教师师资介绍简介-王继龙...