我想通过java代码 获取http://www.people.com.cn/页面的字符编码格式 我的jdk版本是1.8
时间: 2023-08-14 12:08:41 浏览: 99
在使用Java 1.8版本的情况下,你可以使用以下代码来获取指定网页的字符编码格式:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
import java.nio.charset.UnsupportedCharsetException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CharsetDetector {
public static void main(String[] args) {
String url = "http://www.people.com.cn/";
try {
String charset = detectCharset(url);
System.out.println("Charset: " + charset);
} catch (IOException e) {
e.printStackTrace();
}
}
private static String detectCharset(String url) throws IOException {
URL website = new URL(url);
URLConnection connection = website.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8));
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
reader.close();
Pattern pattern = Pattern.compile("charset=([a-zA-Z0-9\\-]+)");
Matcher matcher = pattern.matcher(sb.toString());
if (matcher.find()) {
String charset = matcher.group(1);
try {
// Check if the detected charset is supported
StandardCharsets.forName(charset);
return charset;
} catch (UnsupportedCharsetException e) {
e.printStackTrace();
}
}
return StandardCharsets.UTF_8.name();
}
}
```
这段代码使用了`java.net.URL`和`java.net.URLConnection`来打开网页并读取其内容。然后使用正则表达式来提取网页中的字符编码格式。如果成功找到编码格式并且被Java支持,就返回该编码格式;否则,默认返回UTF-8编码。
请注意,这只是一个简单的示例,并不考虑所有可能的情况。在实际使用中,你可能需要根据具体情况进行适当的调整和错误处理。
阅读全文