您的位置:首页 > 编程语言 > Java开发

java 之批量转换url中的中文unicode

2016-02-04 15:44 549 查看
有朋友想转url可以使用String urlString = URLEncoder.encode(line, "utf-8");

但是这个会连[:,\,+,?....等等]都给转换了,与js中encodeURIComponent异曲同工

但是我想得到跟js中的encodeURI转换后的url怎么办?

方法如下:
直接代码走起

package test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.io.OutputStreamWriter;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class ReadUrlToEncode {
public static void main(String[] args) throws IOException {
String sourceFile = "D://test.txt";
List<String> l = new ArrayList<String>();
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine engine = sem.getEngineByExtension("js");
LineNumberReader reader = null;
try {
reader = new LineNumberReader(new BufferedReader(new InputStreamReader(new FileInputStream(sourceFile), "gbk")));
String line;
Object res = null;
while ((line = reader.readLine()) != null) {
// String urlString = URLEncoder.encode(line, "utf-8");
try{
//直接解析
res = engine.eval(" encodeURI('"+line+"')");
System.out.println(res);
}catch(Exception ex){
ex.printStackTrace();
}
l.add(String.valueOf(res));
}
reader.close();
} catch (IOException e) {
if (reader != null) {
try {
reader.close();
} catch (IOException ee) {
}
}
}
File fos = new File("D://geturl.txt");
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fos,false)));
writer.close();
System.out.println("file ok");
}

}

测试url:http://www.aaa.net/search?scope=bbs&q=C语言

输出结果:http://www.aaa.net/search?scope=bbs&q=C%E8%AF%AD%E8%A8%80

谢谢各位.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java unicode url