java从文件,控制台,网页提取数据都是以字节流形式输入,由于编码方式不同,有时候会出现中文乱码;javaJDK中有一些类可以很好的解决中文乱码问题;
1)建立一个InputStream对象存储输入的字节流;
2)用InputStreamReader类对字节流按照想要的编码格式重新编写成字符流(默认是GBK编码);
3)用BufferedReader建立一个数据缓存区,存储一个一个的字符,方便进行处理;
到这里使用BufferedReader的readLine()函数就可以逐行提取出Reader里面的数据;
(要是想要提取整个缓存区里的数据,不妨用StringBuffer类型;StringBuffer是一个可变长的字符串,会自动扩容,而String对象是不可变长的,生成时有多大就是多大,StringBuild虽然也是可变长的,但它其中一些函数加了锁机制,性能略输于StringBuffer)
以下是通过一个URL提取网页源码的程序:
package url;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class url_print
{
String strUrl="http://www.baidu.com";
public void print()
{
URL url=null;
try {
url = new URL(strUrl);
URLConnection connection = url.openConnection();
// 获取字节流;
InputStream is = connection.getInputStream();
//将字节流转为字符流并建立读缓存区
BufferedReader r = new BufferedReader(new InputStreamReader(is,"UTF-8"));
String temp;
//StringBuilder可变长的字符串类;
StringBuilder html=new StringBuilder(100);
while((temp=r.readLine())!=null)
{
html.append(temp+"\n");
}
System.out.println(html.toString());
} catch (IOException e) {
return;
}
}
public static void main(String argv[])
{
url_print test=new url_print();
test.print();
}
}
分享到:
相关推荐
在Java编程语言中,处理带有汉字的字符串时,由于汉字占据多个字节,按照字节进行截取可能会导致汉字被不完整地分割,从而产生乱码。为了解决这个问题,我们需要理解Unicode编码以及如何在Java中正确处理多字节字符...
如果中间某次字符处理,用错误的编码方式解码了从输入流读取的字符数据,或用错误的编码方式将字符写入输出流,则下一个字符数据的接收者就会编解码出错,从而导致最终显示乱码。 三、在 Eclipse 中运行 Java 文件...
根据处理的数据单位,Java提供了两种主要类型的流:字符流和字节流。这两种流在处理数据时有显著的区别,尤其是在处理文本数据和二进制数据时。 1. 什么是流 流在Java中是一个抽象概念,它描述了数据如何从一个地方...
字节流主要分为输入流和输出流,其中InputStream类是所有字节输入流的基类,而OutputStream类则是所有字节输出流的基类。在实际应用中,我们经常需要对文本文件进行读取,特别是逐行读取,`readLine()`方法就是为此...
7. 配置文件:配置文件(如.properties或.xml)应以UTF-8编码,避免中文字符乱码。 通过上述方法,可以有效解决Java在处理中文字符时可能出现的乱码问题,确保程序在各种环境下正确显示中文。在开发过程中,保持...
接收数据后,再将接收到的字节流解码为UTF-8字符串。 ```java String username = "用户名"; String password = "密码"; // 发送GBK编码的用户名和密码 out.println(new String(username.getBytes("GBK"), "ISO-...
在Java编程语言中,中文乱码是一个常见的问题,特别是在处理文本输入、输出或者网络传输时。本集合旨在全面解析和解决各种中文乱码问题,帮助开发者有效地理解和应对这类问题。 一、乱码产生的原因 1. 编码与解码...
字符缓冲输入流可以从文件中读取字符数据,而字符缓冲输出流可以将字符数据写入到文件中。 4. 字符流出现原因(理解) 字符流出现的原因是因为 Java 中的字符编码问题。在 Java 中,字符可以使用多种编码方式,...
总的来说,处理`javadbf`中的中文乱码问题主要涉及到正确识别和设置DBF文件的字符编码。理解Java的字符编码机制,以及`javadbf`库提供的API,将有助于你有效地解决这类问题。通过适当配置,你可以顺利地在Java应用...
由于Java和JSP文件是以字节流的方式保存的,如果编译过程中使用的编码方式与源文件的编码不匹配,就会导致乱码。为避免这种情况,建议在Java代码中尽量避免使用中文(除非在注释中),如果必须使用,可以使用命令行...
在Java中,字符乱码通常是由于字符编码不一致导致的。例如,一个以UTF-8编码的文件被误认为是GBK编码来读取,就会出现乱码现象。为了解决这个问题,Java提供了`java.nio.charset.Charset`、`java.io....
Java 和 JSP 源文件中可能包含中文,而 Java 和 JSP 源文件的保存方式是基于字节流的。如果 Java 和 JSP 编译成 class 文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。解决方法是,在 Java 文件中...
7. 编码转换:如果读取到的字符已经乱码,可以先将其转换为一个特定的编码(如ISO-8859-1,因为它可以无损地转换回字节流),然后再用正确的编码重新解码。 8. 文件操作最佳实践:在编写程序时,尽可能使用UTF-8...
Java 和 JSP 源文件中可能包含有中文,而 Java 和 JSP 源文件的保存方式是基于字节流的。如果 Java 和 JSP 编译成 class 文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。例如,如果 Java 文件使用 ...
乱码问题通常涉及到字符编码的不一致,尤其是在处理文本文件、数据库存储或者网络传输时。本文将详细讲解如何使用Java来实现乱码的终极解决方案。 首先,我们需要理解乱码产生的根本原因。乱码通常是由于字符集...
通过以上知识点的深入理解和应用,可以有效地解决“fckeditor(java版-解决中文附件名称乱码问题)”这个问题,确保用户能够正常上传并保存带有中文名称的附件,从而提高产品在中文环境下的可用性和用户体验。
字节流可以分为输入流(InputStream)和输出流(OutputStream),用于数据的读取和写入。例如,FileInputStream和FileOutputStream是Java中常用的字节流类,分别用于文件的读和写。 编码,特别是字符编码,是指将...
3. **字节流读写**:在读取或写入含有中文字符的文件时,如果没有正确设置字符编码,如InputStreamReader、OutputStreamWriter等流的构造函数中未指定字符集,也可能导致乱码。 4. **数据库操作**:在与数据库交互...
Java 语言在读写文件时,经常会 gặp到中文乱码的问题。这是因为 Java 默认使用的字符编码是 ISO-8859-1,而中文字符在这个编码中无法正确地表示。为了避免中文乱码,需要使用正确的编码方式来读取和写入文件。 ...
"java多种解决乱码方案详细资料大全"这个资源很可能包含了一系列针对Java中乱码问题的解决方案。这里,我们将深入探讨几种常见的解决方法。 1. 文件编码与读写: - 使用`BufferedReader`和`FileReader`时,可以...