尝试获取页面的字符编码

原创 2007年10月01日 13:20:00
/**//*
 * EncodeGoter.java
 *
 * Created on 2007年9月30日, 下午4:49
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 
*/


package com.ckcs.url;

import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.Charset;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/** *//**
 *
 * 
@author admin
 
*/

public class EncodeGoter ...{
    
    
/** *//**
     * Creates a new instance of EncodeGoter
     
*/

    
public EncodeGoter() ...{
    }

    
    
/** *//**
     * 获得页面的字符编码
     
*/

    
private String getEncode(String size) throws Exception...{
        URL url 
= new URL(size);
        String charset 
= null;
        Pattern pattern 
= Pattern.compile("charset.*=.*>?", Pattern.CASE_INSENSITIVE);
        URLConnection con 
= url.openConnection();
        String contentType 
= con.getContentType(); //先尝试从http响应头获取字符编码       
        charset = doGetEncode(pattern, contentType);
        
if(charset == null...{  //如果得不到,尝试从页面的元数据信息上获取
            InputStream is = url.openStream();
            BufferedInputStream bis 
= new BufferedInputStream(is);
            ByteArrayOutputStream bos 
= new ByteArrayOutputStream();
            
int count = 0;
            
byte[] bytes = new byte[1024];
            
while((count = bis.read(bytes)) != -1...{  //每次读1024把字符截断了怎么办
                bos.write(bytes, 0, count);
                bos.flush();
                charset 
= doGetEncode(pattern, bos.toString());
                
if(charset != null...{  //找到编码
                    break;
                }

                bos.reset();
            }

        }

        
return charset;
    }

    
    
/** *//**
     * 读取页面数据匹配模式
     
*/

    
private String doGetEncode(Pattern pattern, String str) throws Exception...{
        Matcher matcher 
= null;
        String matchStr 
= null;
        String charset 
= null;
        matcher 
= pattern.matcher(str);
        
if(matcher.find()) ...{  //找到第一个符合要求的
            matchStr = matcher.group();
            
//截取希望处理的字符串,替换可能的特殊符号
            charset = matchStr.substring(matchStr.indexOf("="+ 1).replaceAll("["|/|/|/s].*[/>|>]""");            
        }

        
return charset;
    }

    
    
public static void main(String[] args) throws Exception ...{
        EncodeGoter eg 
= new EncodeGoter();
//        eg.getEncode("http://java.sun.com");
//        eg.getEncode("http://www.sun.com");
//        eg.getEncode("http://www.csdn.net");
//        eg.getEncode("http://www.dmoz.org/");
//        eg.getEncode("http://www.baidu.com/search/image_recommend.html");
        String charset =  eg.getEncode("http://java.sun.com");
        
if (charset != null...{
            System.out.println(
"页面的字符编码应该为:" + charset);
        }
 else ...{
            charset 
= Charset.defaultCharset().toString();  //使用默认编码
            System.out.println("找不到页面字符编码,平台默认编码为:" + charset);
        }

        
    }

}

 

ASP.NET页面的字符编码设置

配置文件中设置全局的编码:             1、使用StreamReader或StreamWriter等对象读写文件时指定的编码应和web.config中指定的编...
  • ptyzhu
  • ptyzhu
  • 2013年09月03日 10:42
  • 1723

【字符编码问题】剖析网页字符集的设置顺序的优先级

上个星期在为一个电子商务网站进行数据转移到新系统中的时候,发现一些产品描述字符老是输出乱码,确定是字符集的问题以后,对字符集再次进行了一次调研,确定了影响页面字符集的方式主要下面几种方式: 文件的编...
  • yanhui_wei
  • yanhui_wei
  • 2014年03月19日 11:46
  • 2266

第三个页面获取不到session

今天写出试卷,出现了一个小问题,在第一个页面,我把试卷的信息放在了action中,下一个页面能正确获取到,但是到了第三个页面,就获取不到了,调试了很久也没发现为什么,突然,我发现在第二个页面的地址栏上...
  • woshiwu
  • woshiwu
  • 2011年03月21日 20:04
  • 1163

在父页面获取子页面元素值的方法

当在一个html父页面中嵌入html子页时,当点击父页面的元素需要读取或者操作子页面元素时,以下方法十分有效。 ...
  • luanhaiyang
  • luanhaiyang
  • 2015年11月27日 17:03
  • 1995

通过IFrame获取其他页面中Div的值

通过IFrame获取其他页面中Div的值
  • ws_hgo
  • ws_hgo
  • 2010年04月07日 10:50
  • 3205

从一个页面获取另一个页面是数据

">修 ---------------------------------------------------------------------------------------------- ...
  • ruiguang21
  • ruiguang21
  • 2016年12月12日 11:25
  • 640

获取页面的HTML

获取页面的HTML    var oXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");    oXmlHttp.open("GET","http://w...
  • bighai78
  • bighai78
  • 2004年11月16日 20:38
  • 958

获取页面的description

var meta = pt.document.getElementsByTagName('meta'); var share_desc = ''; for(i in meta){ if(typeo...
  • yaoyuan_difang
  • yaoyuan_difang
  • 2012年12月22日 19:25
  • 746

js中几种获得页面值的方式

JS中获取页面中的值的几种方式: document.getElementById("id").value;//根据 Id获得对象中的值 document.getElementByName(...
  • xy18930914
  • xy18930914
  • 2016年04月26日 11:08
  • 9489

获取页面的宽高

1 窗口的滚动事件   function scroll() {         return {             top: window.pageYOffset || documen...
  • qq_38892819
  • qq_38892819
  • 2017年06月05日 17:30
  • 65
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:尝试获取页面的字符编码
举报原因:
原因补充:

(最多只允许输入30个字)