为什么会有中文乱码?

news/2024/10/28 21:21:19/

何为乱码

在文件中所看到的字符串是系统把内存中的数据转换成二进制数再解码成一些字符最后显示,就是当你双击打开一个文本文件时系统会把内存的数码信息读取显示出来,当你保存一个文本文件时系统会把这个文件以你所设置的编码方式编码,再放进内存中。

编码方式是什么东西?

编码方式其实是一种计算机的存储规则,常见的字符集有UTF-8,GBK,GB2312。每种字符集都会在它所包含的字符和字节之间建立映射关系。而一个字节就是8个二进制位。所以你也可以把字符集看成是字符和二进制数进行转换的公式或映射表。

一个中文字符以utf-8编码会转成3个byte,如果以gbk编码会转成2个byte;

一个英文字符以utf-8编码会转成1个byte,如果以gbk编码会转成1个byte。

乱码产生原因

原因1.读取数据时未读完整个汉字

我们知道字节流读取数据时,一次只读取一个字节,英文字母只有一个字节存取,所以不会出现乱码,而idea默认的编码规则UTF-8(二进制)对中文的编码是3个字节,读取数据时未读完整个汉字自然会出现乱码。

原因2.编码和解码的方式不统一

如果创建本地文件,而其编码规则是GBK时,GBK的中文是占2个字节,而解码时使用编码规则是UTF-8,两个方式不统一,数据接受不完整会出现乱码

如何避免产生乱码?

1.不要用字节流读取文本文件,针对文本文件使用字符流。

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


http://www.ppmy.cn/news/969564.html

相关文章

chatgpt赋能python:Python转码详解:解决乱码问题

Python转码详解:解决乱码问题 在使用Python进行编程的过程中,经常会遇到乱码的问题。这种情况往往发生在不同操作系统和应用程序之间交互数据时。本文将介绍Python如何进行转码以解决乱码问题。 什么是转码? 当我们将文本从一个编码格式转…

QMessageBox显示中文为乱码

如图,想要输出这些信息,但是展示为乱码 解决办法: 在cpp文件的最顶端加上#pragma execution_character_set("utf-8"),然后重新构建并运行就可以啦!

php echo 输出中文乱码

在php文件中&#xff0c;大家可能经常这样用echo "<script charsetutf-8 typetext/javascript>alert(请输入正确的手机号码);window.location.href/index;</script>"; 结果“请输入正确的手机号码”显示出来的是乱码。 这里提供一种解决办法。 在这句语句…

处理中文乱码和中文部分乱码

文章转自&#xff1a;http://book.51cto.com/art/201112/306309.htm 在网络操作中&#xff0c;关于中文乱码很多初学者都感到非常困难&#xff0c;如何解决乱码&#xff1f;不要没有目的胡乱转码&#xff0c;笔者访问了几个初学者&#xff0c;他们对于这个问题常用的方法就是一…

Qt中文乱码解决办法

目录 一、解决方法&#xff1a;1. QT4版本2. QT5版本 二、QString 为什么会乱码呢三、tr的使用 一、解决方法&#xff1a; 1. QT4版本 中文乱码解决办法是在main.cpp文件加入&#xff1a; #include <QTextCodec> int main(int argc, char **argv) {......// 以下部分解…

PHP界面显示中文乱码

在写一个表单提交的项目中&#xff0c;遇到了PHP界面输出无法显示中文界面。 后来查阅相关资料&#xff0c;得出解决途径。 代码如下&#xff1a; <!DOCTYPE html> <html> <head> <title>123</title> </head> <body><?php he…

中文乱码问题

解决中文乱码问题&#xff0c;出现于解压后中文文件名&#xff0c;中文应用程序即exe 常见的中文乱码及解决一. zip压缩包解压之后中文文件名称乱码1. 系统区域改成中文简体2. 用winar打开的时候&#xff0c;选择名称加密&#xff1a;简体中文 二. 中文应用程序&#xff08;以.…

各种中文乱码的解决方法 (转)

一、Java中文问题的由来 Java的内核和class文件是基于unicode的&#xff0c;这使Java程序具有良好的跨平台性&#xff0c;但也带来了一些中文乱码问题的麻烦。原因主要有两方面&#xff0c;Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。 首先…