很多系统中需要做自己的翻译器,所以大家都想到把现成的网站扒下来用,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)做自己的翻译器(防乱码)相关推荐

  1. 项目宝提供的服务器,开源WebSocket服务器项目宝贝鱼CshBBrain V4.0.1 和 V2.0.2发布

    开源WebSocket服务器项目宝贝鱼CshBBrain V4.0.1 和 V2.0.2发布 更新的功能列表如下: 1.解决开启广播消息开关时,不能同时接入2个客户端的重大缺陷. 2.对广播消息做了重 ...

  2. python aiompq集群_国内首款基于AIO(异步IO)支持集群的高性能开源WebSocket服务器 宝贝鱼 CshBBrain V4.0 发布...

    国内首款基于AIO的开源WebSocket服务器 宝贝鱼 (CshBBrainAIO)正式发布.基于AIO的开源WebSocket服务器 宝贝鱼 依然采用分层的体系结构,协议层和业务层 与 基于NIO ...

  3. 宝贝鱼(CshBBrain)集群配置使用说明

    2019独角兽企业重金招聘Python工程师标准>>> 最近有不少朋友在询问宝贝鱼(CshBBrain)集群的问题,说集群老不成功,本篇文章主要就是解答这个问题的. 首先介绍下宝贝鱼 ...

  4. 基于开源WebSocket服务器宝贝鱼(CshBBrain)的应用横空出世

    2019独角兽企业重金招聘Python工程师标准>>> 开源WebSocket服务器 宝贝鱼(CshBBrain)发布有些日子了,很多人研究 宝贝鱼(CshBBrain) 仅仅是为了 ...

  5. 【五一创作】(2017NHOI-GOC测评)第1题 鱼形(fish)

    题目描述 小P同学喜欢拼七巧板类的游戏,他想使用3个边长是100的正三角形拼出下面的图形,请你帮忙使用GoC编程绘制. 输入格式 (无输入数据) 输出格式 相应的图形. 知识点 程序 int main ...

  6. PHP一行代码集成雅虎宝贝鱼在线翻译功能 -- JAVAEYE不支持IE8

    今天发现可以这样(*^__^*) 嘻嘻-- 可是只能取单个词组 之间不能有空格 待续 做好了在发布代码 怕被嘲笑啊 今天想把图传上来 结果发现IE8根本就不支持本站的上传功能,上传一个文件往往变成2个 ...

  7. 小猫吃鱼:fish.cpp

    题目描述 原理: 明明家从 1 号站点出发,开车去旅游,一共要经过 n 个站点,依次为 2.3--n. 由于明明带上了心爱的小猫,在每个站点都要为小猫提供一条鱼用做美餐(包括 1 号站点). 除了 1 ...

  8. #我要上首页# 新版博客首页来了,做明星博主还会远吗?

    千呼万唤始出来,新版博客首页终于如期与大家相见了! 这一次首页改版,除了发布全新LOGO,提升UI视觉体验外,更重要的是我们开疆扩土,增加了很多新分类,同时极大的开拓了原创文章的展示空间! 那么问题来 ...

  9. 高点击率淘宝宝贝主图怎么做

    想必大家都一样,在购买淘宝商品的时候,肯定就会对卖家所上传的图片,看了又看的,所以说我们的宝贝主图的话,如果做的不好的,那么肯定点击也就好不到哪里去了.那么今天要说的其实并不是要怎么去测图,而是说我们 ...

最新文章

  1. php 批量初始化数组,PHP post 数组初始化
  2. python启动appium服务_python下appium服务的自启动和关闭
  3. Oracle发布开源的轻量级 Java 微服务框架 Helidon
  4. 【Android 逆向】函数拦截 ( GOT 表拦截 与 插桩拦截 | 插桩拦截简介 | 插桩拦截涉及的 ARM 和 x86 中的跳转指令 )
  5. [Apache]网站页面静态化与Apache调优(图)
  6. C/C++ 给Python写扩展模块
  7. 【主题演讲】探索云、视频会议,编解码的奥妙
  8. Reuse library debug in Chrome - phase2 handle success response (2)
  9. vscode用作markdown入门1--环境创建
  10. 用instrument的僵尸工具
  11. python dic字典使用
  12. TypeError: 'RGB' has type str, but expected one of: bytes(法1)
  13. Python实战——为人脸照片添加口罩
  14. 香槟分校计算机专业毕业生去向,数据会告诉你 伊利诺伊大学香槟分校计算机系有多可怕...
  15. 俞渝年轻图片_组图:2007中国职场女性榜样-俞渝
  16. 拼多多校招算法题迷宫寻路
  17. 人们从诗人的字句里选取自己心爱的意义但诗句的最终意义是指向你
  18. 【云安全】云计算中常见的网络虚拟化
  19. 谁将引领新一代视频编码标准:HEVC、AVS2、AV1性能对比报告
  20. 小白de架构哲学 - SDK接口设计对接流程

热门文章

  1. 企业网盘+超融合,联想云加速的双引擎
  2. 微服务架构—优雅停机方案
  3. 全国首张数字人民币保单成功出单
  4. 微服务高性能高可用架构设计
  5. Python学习Day08
  6. 声网AI降噪测评系统初探
  7. txt文件-英汉字典
  8. Google I/O 见闻
  9. 《数字集成电路物理设计——陈春章》学习笔记
  10. 通过指定的URL获取返回图片的BASE64编码