byte[] buf = new byte[128];
int length = 0;
while((length = fis.read(buf))>0){
out.println(length);
out.println(new String(buf,0,length,"Unicode"));
}
其中读取的文件编码为Unicode,结果如下

为什么第二次读取的是乱码呢?
public String decodeUnicode(String theString) {
char aChar;
int len = theString.length();
StringBuffer outBuffer = new StringBuffer(len);
for (int x = 0; x < len;) {
aChar = theString.charAt(x++);
if (aChar == '\\') {
aChar = theString.charAt(x++);
if (aChar == 'u') {
// Read the xxxx
int value = 0;
for (int i = 0; i < 4; i++) {
aChar = theString.charAt(x++);
switch (aChar) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
value = (value << 4) + aChar - '0';
break;
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
value = (value << 4) + 10 + aChar - 'a';
break;
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
value = (value << 4) + 10 + aChar - 'A';
break;
default:
throw new IllegalArgumentException(
"Malformed \\uxxxx encoding.");
}
}
outBuffer.append((char) value);
} else {
if (aChar == 't')
aChar = '\t';
else if (aChar == 'r')
aChar = '\r';
else if (aChar == 'n')
aChar = '\n';
else if (aChar == 'f')
aChar = '\f';
outBuffer.append(aChar);
}
} else
outBuffer.append(aChar);
}
return outBuffer.toString();
}
import static java.lang.System.*;
import java.io.*;
class Main16
{
public static void main(String[] args)throws IOException{
FileInputStream fis = new FileInputStream("read.txt");
System.setIn(fis);
byte[] buf = new byte[12];
int length = 0;
while((length=System.in.read(buf))>0){
System.out.print(new String(buf,0,length));
}
}
}
URL url=new URL(uri); //URLConnection conn=url.openConnection(); HttpURLConnection conn=(HttpURLConnection)url.openConnection(); //conn.setDefaultRequestProperty("Content-Type"...
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("test.txt"), "utf8")); 用这种方式读就可以指定编码,指定的编码与文件的编码一致。
今天,使用字节输入流InputStream来读取一个文本文件的内容,然后复制到另一个文件里,实现文件复制...分析一下,中文能出来,说明不是字符集问题,但是就是某些汉字会乱码。询问老师后,老师告诉我,这是因为一个汉字
一个汉字是2-4字节,而空格是半个字节,当你设置的缓冲区大小如果不太合适,就会造成读取不到一个完整的汉字的问题,因此就会出现中文乱码问题。 解决办法: 1、使用转换流 将字节输入输出流转换成字符输入...
FileInputStream fis = new FileInputStream("filePath"); // filePath为文件路径 // 声明一个字节数组 byte[] b = new byte[1024]; StringBuffer str = new StringBuffer(); int len ; // 循环读取 ...
今天突然突发奇想,想来操作下Java文件读取(不得不说以前自己都很懒,能百度的东西自己都不愿意自己亲手去做,希望广大码友不要学我,凡事自己多实践)这篇文章主要记录自己在使用Inputstream遇到问题(乱码和字节...
1.第一种状况java服务器和客户端编码不统一形成中文乱码,当服务器返回数据是UTF-8格式时,客户端在读取输入流时,须要将其转换成UTF-8格式,请看客户端部分代码:web………………..省略部分代码………………// ...
/*出现丢失,乱码 * ipr aai.; motjv.e.; ulccasTsSce ulcsai odmi(tig]ag)trw xeto,IEcpin{ okts e okt"2..."66) OtuSra s=s.eOtuSra(; aaupttemds=nwDtOtuSra(s; o.rtUF"el,evr)/×?? §??? o.ls(; o....
运行环境:Docker,JDK8,Spring Boot,Spring Cloud,Zuul 在微服务网关编写的过程中,需要解析网关转发后响应的...在本地环境及测试环境均运行正常,而在正式环境则出现响应解析乱码的问题。 尝试使用 I...
1.第一种情况服务器和客户端编码不统一造成中文乱码,当服务器返回数据是UTF-8格式时,客户端在读取输入流时,需要将其转换成UTF-8格式,请看客户端部分代码:………………..省略部分代码……………… // 设置URL...
import java.io.ByteArrayOutputStream;...import java.io.InputStream; public class StreamTool { public static String toString(InputStream is) { try { ByteArrayOutputStream b...
public static String getHtmlContent(String htmlurl, String charset) {StringBuffer sb = new StringBuffer();String acceptEncoding = "";/* 1.生成 HttpClinet 对象并设置参数 */HttpClient httpClient = new ...
import java.io.ByteArrayOutputStream;...import java.io.InputStream; public class StreamTool { public static String toString(InputStream is) { try { ByteArrayOutputStream boa=...
//bug,中文为乱码 //InputStream转String public String inputStream2String(InputStream in) throws IOException { StringBuffer out = new StringBuffer(); byte[] b = new byte[4096]; ...
一,知识点1,InputStream是输入流的抽象基类,定义了输入流应该实现的方法。2,很重要的一个方法是read(byte[] buffer,int offset,int length),三个参数分别代表读到哪,从当前位置开始读取的偏移,读取长度。3,...
在测试时出现一个很常见的问题,就是客户端收到服务端返回的数据总是乱码。开始一直以为是服务端的问题,通过上网查询,大家都说使用PrintWriter返回数据时需要在PrintWriter out = response.getWriter();前面设置,...
分割符的问题: jdk7的改进写法 InputStream InputStream输入流,以它的子类FileInputStream来讲解 绝对路径和相对路径, 绝对路径是值在硬盘上存储的真正路径 相对路径 是指相对于某个文件的路径, ja...
1.为什么会出现字符编码 (此字符编码不是 字符集中的字符编码)因为 计算机中保存的数据都是二进制数据,这只有计算机能看懂,而我们人类是看不懂的,所以先要将人类语言 按照规则 翻译成计算机的语言,然后人类读...
JAVA中转换流InputStream和OutputStream设置编码方式 1、基本思路:将字符流中FileReader和FileWriter换成其父类(转换流) 2、代码实现: import java.io.File; import java.io.FileInputStream; import java.io....
当我们获取RequestInputStream时,里面如果有中文会显示乱码,在使用request.setCharacterEncoding("UTF-8");后也无济于事 我在查阅网上相关解决方案后,自己编写了一个类RequestInputStreamEncoding 里面有一个方法...
InputStream类中read方法读取文件时遇见的乱码问题 在F:\123\problems文件夹内手动新建一个文本:a1.txt。输入"中文测试"4个中文。 用OutputStream创建名称为a.txt的文件,向里面写入数据"中文测试"4个中文。 ...
一篇文章帮你理解字符编码以及Java中的各种编码问题,从此以后,妈妈再也不用担心我程序中乱码和编码黑洞这些问题啦!
1、理解为什么InputStream输入中文到控制台会出现乱码的关键,是要弄清楚乱码根源。 2、一个中文字符占两个字节,假如在接收一个中文字符时,只接收了中文字符的一个字节就开始输出,那么那个中文字符就会失帧,...
各个国家和地区所制定的不同 ANSI 编码标准中,都只规定了各自语言所需的“字符”。比如:汉字标准(GB2312)中没有规定韩国语字符怎样存储。这些 ANSI 编码标准所规定的内容包含两层含义:1. 使用哪些字符。...
小编今天测试读取excel文件,并且取...首先这里不是中文乱码的问题,反而是英文的时候出现乱码, 然后查阅了许多网上的解决办法,最终最好的解决办法是,在读取excel 的时候, 加上WorkbookSettings,代码如下所...
InputStream是抽象类,只是InputStream读取的是字节,使用的参数是byte数组(byte[]) 读取文件的输入流:FileInputStream是节点流需要直接和指定文件关联。 方法摘要: available() 返回此输入流下一个方法...
InputStream读取流有三个方法,分别为read(),read(byte[] b),read(byte[] b, int off, int len)。其中read()方法是一次读取一个字节,效率是非常低的。所以最好是使用后面两个方法。 /** * 读取流 * * ...
在Java中InputStream和String之间的转化十分普遍,本文主要是总结一下转换的各种方法,包括JDK原生提供的,还有一些外部依赖提供的。1、InputStream转化为String1.1 JDK原生提供方法一: byte[] bytes = new byte[0]...

本课程讲解了Java语言概述及环境搭建和配置 学完后可独立完成HelloWorld案例,并能够解决常见的开发小问题。