用新版的Yahoo宝贝鱼(Babel Fish)做自己的翻译器(防乱码)
很多系统中需要做自己的翻译器,所以大家都想到把现成的网站扒下来用,Google Translate和Yahoo Babel Fish就成了大家的首选.Google好说,直接用HttpURLConnection做post请求即可,但是Google防盗措施非常好,用个几次就出现一个防盗链的页面,就无法玩了,所以Yahoo Babel Fish就成了大家的选择.但是发现最新版本的宝贝鱼用HttpURLConnection怎么请求,怎么设置编码方式得到的中文都是乱码.后来发现,在java中必须设置connection.setRequestProperty( "User-agent" , "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50215; fqSpider)" );才能得到正确的中文显示,c#中同样.还需要注意的是,在输入的link中是中文的话,除了用java.net.URLEncoder.encode编码外还需要在link中加入&ei=gb2312.下面是全部编码.
import java.io.*;
import java.net.*;
public class Yahoo {
static final String yahooUrl ="http://babelfish.yahoo.com.cn/translate_txt";
public String yahootranslate(String query,String lang) throws MalformedURLException,IOException,UnsupportedEncodingException
{
String urlstr = yahooUrl;
String content=null;
try{
content=getHtmlContent(urlstr,"trtext=" + encodeText(query) + "&lp=" + lang+"&ei=gb2312","UTF-8");
}catch(Exception e){}
return getyahooContent(content).trim();
}
private String getyahooContent(String htmltext) {
String ss = "<div id=/"pd/" class=/"pd/">" ;
String se = "</div>" ;
int ssidx = htmltext.indexOf(ss);
int seidx = htmltext.indexOf(se,ssidx);
if(ssidx<0)return null;
String restr = htmltext.substring(ssidx + ss.length(),seidx);
return restr;
}
private String getHtmlContent(String _url,String _post,String _charset) throws Exception
{
String post=null;
URLConnection connection=null;
Proxy proxy=null;
URL url = new URL(_url);
if(proxy!=null)connection = (HttpURLConnection)url.openConnection(proxy);
else connection = (HttpURLConnection)url.openConnection();
connection.setRequestProperty( "User-agent" , "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50215; fqSpider)" );
connection.setDoInput(true);
connection.setDoOutput(true);
connection.connect();
OutputStreamWriter out = new
OutputStreamWriter(connection.getOutputStream(),"UTF-8");
out.write(_post);
// remember to clean up
out.flush();
out.close();
String charset = _charset;
BufferedReader in = new BufferedReader( new
InputStreamReader(connection.getInputStream(),charset)); // 使用指定编码接收数据
String line = null ;
StringBuilder sb = new StringBuilder();
while ((line = in.readLine()) != null ) {
sb.append(line);
}
in.close();
return sb.toString();
}
public static String encodeText(String text) {
String str = java.net.URLEncoder.encode(text);
return str;
}
public static void main(String[] args) throws Exception{
Yahoo yahoo=new Yahoo();
//中->英
System.out.println(yahoo.yahootranslate("你好吗?","zh_en"));
//英->中
System.out.println(yahoo.yahootranslate("hello China","en_ch"));
}
}
用新版的Yahoo宝贝鱼(Babel Fish)做自己的翻译器(防乱码)相关推荐
- 项目宝提供的服务器,开源WebSocket服务器项目宝贝鱼CshBBrain V4.0.1 和 V2.0.2发布
开源WebSocket服务器项目宝贝鱼CshBBrain V4.0.1 和 V2.0.2发布 更新的功能列表如下: 1.解决开启广播消息开关时,不能同时接入2个客户端的重大缺陷. 2.对广播消息做了重 ...
- python aiompq集群_国内首款基于AIO(异步IO)支持集群的高性能开源WebSocket服务器 宝贝鱼 CshBBrain V4.0 发布...
国内首款基于AIO的开源WebSocket服务器 宝贝鱼 (CshBBrainAIO)正式发布.基于AIO的开源WebSocket服务器 宝贝鱼 依然采用分层的体系结构,协议层和业务层 与 基于NIO ...
- 宝贝鱼(CshBBrain)集群配置使用说明
2019独角兽企业重金招聘Python工程师标准>>> 最近有不少朋友在询问宝贝鱼(CshBBrain)集群的问题,说集群老不成功,本篇文章主要就是解答这个问题的. 首先介绍下宝贝鱼 ...
- 基于开源WebSocket服务器宝贝鱼(CshBBrain)的应用横空出世
2019独角兽企业重金招聘Python工程师标准>>> 开源WebSocket服务器 宝贝鱼(CshBBrain)发布有些日子了,很多人研究 宝贝鱼(CshBBrain) 仅仅是为了 ...
- 【五一创作】(2017NHOI-GOC测评)第1题 鱼形(fish)
题目描述 小P同学喜欢拼七巧板类的游戏,他想使用3个边长是100的正三角形拼出下面的图形,请你帮忙使用GoC编程绘制. 输入格式 (无输入数据) 输出格式 相应的图形. 知识点 程序 int main ...
- PHP一行代码集成雅虎宝贝鱼在线翻译功能 -- JAVAEYE不支持IE8
今天发现可以这样(*^__^*) 嘻嘻-- 可是只能取单个词组 之间不能有空格 待续 做好了在发布代码 怕被嘲笑啊 今天想把图传上来 结果发现IE8根本就不支持本站的上传功能,上传一个文件往往变成2个 ...
- 小猫吃鱼:fish.cpp
题目描述 原理: 明明家从 1 号站点出发,开车去旅游,一共要经过 n 个站点,依次为 2.3--n. 由于明明带上了心爱的小猫,在每个站点都要为小猫提供一条鱼用做美餐(包括 1 号站点). 除了 1 ...
- #我要上首页# 新版博客首页来了,做明星博主还会远吗?
千呼万唤始出来,新版博客首页终于如期与大家相见了! 这一次首页改版,除了发布全新LOGO,提升UI视觉体验外,更重要的是我们开疆扩土,增加了很多新分类,同时极大的开拓了原创文章的展示空间! 那么问题来 ...
- 高点击率淘宝宝贝主图怎么做
想必大家都一样,在购买淘宝商品的时候,肯定就会对卖家所上传的图片,看了又看的,所以说我们的宝贝主图的话,如果做的不好的,那么肯定点击也就好不到哪里去了.那么今天要说的其实并不是要怎么去测图,而是说我们 ...
最新文章
- MFC调用CFileDialog之后目录居然会改变,调试了好久终于发现是这个问题
- Python3学习笔记(一):基础语法
- 微软桌面5.0新增时间线功能
- python3中文手册-Python 输入和输出
- XML配置里的Bean自动装配与Bean之间的关系
- VMware Fusion配置CentOS系统
- Linux命令集—— cat AND more
- 多时隙编码aloha(MuSCA)与编码时隙aloha(CSA)协议分析
- mybatis批量删除提示类型错误
- 计算机科学本科科研经历,秦瑶:一名本科生的科研故事
- uWSGI, Gunicorn, 啥玩意儿?
- 值得收藏|基于全球切片解析标准TMS的瓦片规则
- 20.创新与企业家精神——结论,企业家社会
- APISpace 让你快速获取名言警句
- vue实现打开新窗口预览PDF文件
- Explaining Knowledge Distillation by Quantifying the Knowledge
- JFreeChart教程
- ATFX:离岸人民币破7.3, 调控思路下,人民银行或有大动作
- 关于前端隐藏元素的问题
- 0689 ZOJ - 4128