很多系统中需要做自己的翻译器,所以大家都想到把现成的网站扒下来用,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. MFC调用CFileDialog之后目录居然会改变,调试了好久终于发现是这个问题
  2. Python3学习笔记(一):基础语法
  3. 微软桌面5.0新增时间线功能
  4. python3中文手册-Python 输入和输出
  5. XML配置里的Bean自动装配与Bean之间的关系
  6. VMware Fusion配置CentOS系统
  7. Linux命令集—— cat AND more
  8. 多时隙编码aloha(MuSCA)与编码时隙aloha(CSA)协议分析
  9. mybatis批量删除提示类型错误
  10. 计算机科学本科科研经历,秦瑶:一名本科生的科研故事
  11. uWSGI, Gunicorn, 啥玩意儿?
  12. 值得收藏|基于全球切片解析标准TMS的瓦片规则
  13. 20.创新与企业家精神——结论,企业家社会
  14. APISpace 让你快速获取名言警句
  15. vue实现打开新窗口预览PDF文件
  16. Explaining Knowledge Distillation by Quantifying the Knowledge
  17. JFreeChart教程
  18. ATFX:离岸人民币破7.3, 调控思路下,人民银行或有大动作
  19. 关于前端隐藏元素的问题
  20. 0689 ZOJ - 4128

热门文章

  1. 安全L1-AD.3-DNS代理原理及配置
  2. 也谈时间管理和GTD
  3. Linux系统调用七、与文件权限有关的系统API串讲
  4. 国外Linux服务器同步北京时间
  5. hbase表格实现数据压缩
  6. Matplotlib可视化菜鸟教程
  7. px像素、em相对单位,到底是什么意思?
  8. 物联网毕业设计 单片机火灾报警器设计与实现
  9. java-php-python-ssm猫咪伤患会诊复查医疗平台计算机毕业设计
  10. IOC AOP OOP拙见