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>

求大牛指教 菜鸟程序猿不胜感激!
多谢各位大牛 你们说的我都试过了 但还是没有成功

参考技术A str = new String(bytes,"gbk");
//如果不行,那就utf-8试试。

追问

试过了 没成功。。。

追答

试试unicode,如果还是乱码的话请把源文件发我。
doc.toString().getBytes("gbk");下面不要转码了,你试试。

本回答被提问者和网友采纳
参考技术B System.out.println(new String(str.getBytes("UTF-8"),"ISO8859-1")) 试试追问

试过了 不行啊

追答

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 字符串输出到控制台乱码问题的主要内容,如果未能解决你的问题,请参考以下文章

java控制台输出乱码

为啥MyEclipse的Console输出中文为乱码?

Idea控制台输出日志乱码解决

eclipse中java中文控制台输出的这种乱码怎么解决

delphi控制台程序输出中文乱码,如何解决?

IDEA控制台输出中文乱码问题