尝试获取页面的字符编码

原创 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页面的字符编码设置

这么好的文章,怕流失,所以摘录下来~~

有关保存文件时的编码选项与html/jsp页面设定字符编码的配置

原文链接:http://jkhandsome12-163-com.iteye.com/blog/750469 分两种情况介绍 注:首先,各位得对一次 请求/响应 的流程有基本认识,即:浏览...
  • liliiii
  • liliiii
  • 2015年05月01日 11:29
  • 465

有关保存文件时的编码选项与html/jsp页面设定字符编码的配置

原文地址:http://jkhandsome12-163-com.iteye.com/blog/750469 分两种情况介绍  注:首先,各位得对一次 请求/响应 的流程有基本认识,即:浏...

python_基础总结1 python由来 字符编码 注释 pyc文件 python变量 导入模块 获取用户输入 流程控制if while

1 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为...

(C#)获取字符编码的类

using System; using System.Collections.Generic; using System.Text; namespace MyEncoding { #regi...
  • yenange
  • yenange
  • 2012年01月18日 23:12
  • 10406

(C#)获取字符编码的类

using System; using System.Collections.Generic; using System.Text; namespace MyEncoding {  ...
  • my98800
  • my98800
  • 2016年06月03日 23:30
  • 708

正确使用字节流按照指定字符编码获取字符串

在实际工作中,我们经常会遇到读取文本或网络中的内容,但是由于编码格式的不统一,往往得到的结果总是一团乱码,这就需要将文本按照它原本保存的编码解析成正确的内容。下面这段代码使用了字节按照指定编码获取字符...

字符编码查看器 1.4.2

  • 2017年11月10日 15:24
  • 37KB
  • 下载

字符编码转换工具

  • 2017年07月12日 09:17
  • 349KB
  • 下载

asp 页面中gb2312页面接受utf-8编码字符的变量,字符编码转化时出错,中文字数是偶数的话就不会少,奇数的话就会少

路过的兄弟姐妹,大哥大姐,热心的高手们请帮小弟一个忙,不胜感激。我用以下的一个函数 来解决gb2312页面接受utf-8编码字符的变量编码出错问题,结果是中文字数是偶数的话就不会少,奇数的话就会少一个...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:尝试获取页面的字符编码
举报原因:
原因补充:

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