java 字符串输出到控制台乱码问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 字符串输出到控制台乱码问题相关的知识,希望对你有一定的参考价值。
获取到的HTML源文件的编码为gb18030
将源文件输出到console时中文的部分会出现乱码 如:
<div class="tf no">
<u tabindex="0" class="black tt ">�ʼ��˵� -- ������估��ϵͼ</u>
经过bytes转换后 输出到控制台仍是乱码:
Document doc = Jsoup.parse(lr.getHtml());
byte[] bytes = doc.toString().getBytes();
String str = new String(bytes);
str = new String(bytes,"gb18030");
System.out.println(str);
控制台输出:
<div class="tf no">
<u tabindex="0" class="black tt ">锟绞硷拷锟剿碉拷 - 模锟酵硷拷锟斤拷系图</u>
实际的源文件:
<u tabindex="0" class="black tt ">zhangqiu: 考勤</u>
求大牛指教 菜鸟程序猿不胜感激!
多谢各位大牛 你们说的我都试过了 但还是没有成功
//如果不行,那就utf-8试试。追问
试过了 没成功。。。
追答试试unicode,如果还是乱码的话请把源文件发我。
doc.toString().getBytes("gbk");下面不要转码了,你试试。
试过了 不行啊
追答gbk呢
参考技术C 用的什么软件,如果是myeclipse或eclipse的话,软件的编码也要一致追问myeclipse10 run里面是默认的我没改过
java io怎么读取文件并输出到控制台上?
有一个txt文件,内容是: hello
现在想通过FileInputStream 输入流读取这个txt里的内容,并把内容输出到控制台上。
请问怎么实现?
import java.io.FileInputStream;
import java.io.IOException;
public class demo
public static void main(String[] args) throws IOException
FileInputStream fis = new FileInputStream("demo1.txt");
byte [] bys =new byte[200];
int len = fis.read();
String string = new String(bys,0,len);
System.out.println(string);
我这样打出来都是乱码,求大神。。。。
直接说问题原因:你只定义byte数组,但没有把文件流放入到数组中,所以打印的string字符串内容是一串空格(看我图1)。
解决方法:int len = fis.read(); read 方法加入参数bys,这样才能把fis的内容注入bys里面。
顺便说下,FileInputStream不能正确输出中文,因为这个是按字节输出的,每个中文站2个字节,会出现乱码。下面给出正确代码截图,和运行截图(图2 、3)
参考技术A 如果有乱码,那可能是转码的问题,你试一下对内容转码一下。string = new String(string.getBytes("ISO-8859-1"),"UTF-8");
这句话加到输出语句之前,如果不好使就把UTF-8换成GBK,应该就可以了。 参考技术B 用BufferedReader封装,字符占两个字节,你用byte容易出现只读了一半的情况。。。 参考技术C 把bys写到read里。int len = fis.read(bys); 参考技术D 你的程序只读取了文件的前200个字节。但出现乱码的原因更可能是字符编码问题,首先确认一下demo1.txt的编码,然后new String的时候,使用该编码。
以上是关于java 字符串输出到控制台乱码问题的主要内容,如果未能解决你的问题,请参考以下文章