Java基础 为什么会有乱码?

为什么会有乱码?

原因①:读取数据的时候未读完整个汉字

原因②:编码和解码的方式不统一

 

如何不产生乱码?

1. 不要用字节流读取文本文件

2. 编码解码时使用同一个码表,同一种编码方式

 

问:字节流读取中文会乱码,但为什么拷贝文本文件不会乱码呢?

答:拷贝时,是一个字节一个字节地拷贝过去的,数据没有丢失,如果记事本在读取文件的时候,用到字符集和编码方式 与 数据源保持一致,就不会出现乱码了

 

问:为什么用字节流读取文本文件会乱码?

答:

使用字节流(如FileInputStream)读取文本文件可能会导致乱码的原因是因为文本文件通常是以某种字符编码(如UTF-8、UTF-16、GBK等)存储的,而字节流是以字节为单位读取数据,不会进行字符编码的解释。因此,当您使用字节流读取文本文件时,文件中的字节会以它们的原始形式被读取,而不会被解释为字符。这可能导致以下情况:

  1. 字符编码不匹配:如果文本文件使用的字符编码与您在读取时指定的字符编码不匹配,就会导致乱码。例如,如果文件是UTF-8编码,但您尝试使用默认的系统字符编码(可能不是UTF-8)来读取文件,那么某些字符会被解释不正确,导致乱码。

  2. 多字节字符:文本文件中的某些字符可能需要多个字节来表示,特别是在UTF-8编码中。使用字节流读取时,这些多字节字符可能被拆分为多个字节,导致乱码或字符分解不正确。

为避免乱码问题,建议使用字符流(如FileReader)来读取文本文件,字符流会考虑字符编码,将字节正确地解释为字符。

 

posted @ 2023-10-23 19:41  1stzz1  阅读(43)  评论(0)    收藏  举报