public static void main(String[] args) throws Exception {
  FileWriter fw = new FileWriter("text.txt");
  PrintWriter fout = new PrintWriter(fw);
  URL url = new URL("http://www.google.com/search?q=phone&hl=en&lr=&newwindow=1&start=0&sa=N");
  URLConnection URLConn = (HttpURLConnection)url.openConnection();
  URLConn.setRequestProperty("User-agent","IE/6.0");
  BufferedReader br = new BufferedReader(new InputStreamReader(URLConn.getInputStream()));
  String s,temps = null;
  while((s = br.readLine()) != null) {
    System.out.println(s);
    fout.println(s);
    fout.flush();
  }
fout.close();
fw.close();上面这段程序读到的页面源文件中的中文字符都编码成&#加5位的数字,从源文件中看到它的编码方式是charset=ISO-8859-1,本人也在网上找了很多关于ISO-8859-1转换gb2312的方法,但都无法实现正确的转换,希望高人能够指点迷津 谢谢附:网上找的ISO-8859-1转换gb2312的方法,但我用了不行:
public class Convert { 
/** 把ISO-8859-1码转换成GB2312 
*/ 
public static String ISOtoGB(String iso){ 
String gb; 
try{ 
if(iso.equals("") || iso == null){ 
return ""; 

else{ 
iso = iso.trim(); 
gb = new String(iso.getBytes("ISO-8859-1"),"GB2312"); 
return gb; 


catch(Exception e){ 
System.err.print("编码转换错误:"+e.getMessage()); 
return ""; 



谢谢 谢谢

解决方案 »

  1.   

    new String(origin.getBytes("ISO_8859_1"), "GBK");
      

  2.   

    我同意javadesigner(以前搞java现在被java搞) 的看法,交个朋友,[email protected]
      

  3.   

    new String(origin.getBytes("ISO_8859_1"), "GBK");
    我试了 还是不行啊 输出的仍然没有变化
    你们试下看看 我输入的是:在这登广告—全年500元起正确的结果应该是:“在这登广告—全年500元起”为什么还是转换不了呢?
      

  4.   

    &#22312 
    这样的已经是unicode了,你直接把那段编码存成html文件看
      

  5.   

    存成html并用浏览器打开的确是中文显示的,但用程序读源文件还是代码,而不是中文字符阿。
    哭啊~~~~谁来帮帮我 怎么用程序把:在这登广告—全年500元起翻译成:“在这登广告—全年500元起”这句话阿~~~
    我给高分!!!!
      

  6.   

    在Spring里有个HtmlUtils类,可以实现你要求的功能:
    String t = "在这登广告—全年500元起";
    System.out.println(HtmlUtils.htmlUnescape(t));
    HtmlUtils类全路径:org.springframework.web.util.HtmlUtils
      

  7.   

    非常感谢楼上的 我似乎看到希望了
    能给我一个完整的org包吗?
    我的jdk里没有你springframework这个包 麻烦给我个下载的链接 谢谢!
      

  8.   

    摔哥
    你的这个问题明显啊
    &#***;
    是html的特殊字元
    真正有用的是***
    你能在浏览器显示就已经是“检体中文编码”了
    你吧***提出来在显示,绝对正确。
    当然要把整型先转化为字符
    如22312的16进制
    连成一串后再显示,具体还是自己作把
      

  9.   

    方法一:
    import java.io.*;public class InputReader
    {
      public static void main(String[] args) throws Exception
      {
        InputStreamReader isr=new InputStreamReader(System.in,"gb2312");
        BufferedReader br=new BufferedReader(isr);
        String strLine=br.readLine();
        for(int i=0;i<strLine.length();i++)
        {
          System.out.println(Integer.toHexString((int)strLine.charAt(i)));
        }
        isr.close();
        System.out.println(strLine);
      }
    }
    把这段代码中的InputStreamReader isr=new InputStreamReader(System.in,"gb2312");的
    System.in改成你要转换的文件就OK了.
    方法二:
     把输出语句System.out.println(xxxx);改写成
         String a=new string(xxxx.getBytes("gb2312"),"iso8859-1");
         System.out.println(a);
    完全可以实现.
    方法三:
    下载本电子书<<张孝祥Java 就业培训教程>>,第7章IO的高级应用
    一目了然  西西...
      

  10.   

    Spring:
    http://www.springframework.org
      

  11.   

    引用一个:
    当Request对象获取客户提交的汉字字符时,会出现乱码问题,必须进行特殊处理。首先,将获取的字符串用ISO-8859-1进行编码,并将编码存发岛一个字节数组中,然后再将这个数组转化为字符串对象即可。
    例:
      String textContent=request.getParameter("boy");
      byte b[]=textContent.getBytes("ISO-8859-1");
      textContent=new String(b);
    偷前辈的,哈哈