字符集详解

54 篇文章 1 订阅
订阅专栏

字符集(Character Set)是一种映射关系,将字符与二进制数据之间进行转换。在计算机中,使用字符集来表示和存储文本数据。

常见的字符集包括 ASCII、Unicode 和 UTF-8 等。

  1. ASCII(American Standard Code for Information Interchange): ASCII 字符集定义了 128 个字符,包括英文字母、数字、标点符号及一些控制字符。每个字符用一个字节(8 位)来表示。

  2. Unicode: Unicode 是一种字符集,它定义了全球范围内所有字符的唯一编码标准。Unicode 使用 16 位或者更多位来表示每个字符,可以表示几乎所有的字符。然而,由于采用固定长度编码,存储和传输效率较低。

  3. UTF-8(Unicode Transformation Format-8): UTF-8 是 Unicode 的可变长度编码方案之一,它可以用来在计算机中存储和传输 Unicode 字符。UTF-8 使用 8 位(1 字节)作为最小单位,根据字符的不同范围使用不同长度的编码。对于 ASCII 字符,UTF-8 编码与 ASCII 完全兼容,可以用一个字节表示。而对于非 ASCII 字符,UTF-8 使用多个字节进行编码。

  4. GBK(GuoBiaoKu)是中华人民共和国国家标准,也称为GB2312-1980标准的扩充版本。GBK字符集是对GB2312字符集的扩展,支持包括繁体中文、日文假名和韩文在内的更多字符。

    主要特点如下:

  1. 编码范围:GBK字符集使用双字节编码,每个字符使用两个字节表示,所以最大能够表示65536个字符。
  2. 兼容性:GBK字符集兼容GB2312字符集,即GB2312编码中的所有字符在GBK中仍然能够正确显示。
  3. 扩展区域:GBK字符集还增加了一些汉字字符和其他语言字符,使其可以涵盖更广泛的文字范围。
  4. 跨平台支持:GBK字符集被广泛应用于中国大陆和台湾地区的操作系统、应用程序以及网页等,能够在多个平台上正常显示。

UTF-8 的优点是兼容 ASCII,支持多语言字符,并且在存储和传输中相对节省空间。因此,UTF-8 成为互联网上最常用的字符集编码方式。

在Java编程中,String 类使用的是 Unicode 字符集。当将字符串写入文件或传输时,可以通过指定字符集来控制字符串与字节之间的转换。

比较:

 理解了这些我们就可以推出计算机产生乱码的原因

  1. 字符集不匹配:当使用不同的字符集编码方式进行字符的输入、输出、存储或传输时,如果没有正确地进行字符集转换,就会导致乱码。例如,将使用UTF-8编码的文本以GBK编码解析,或者将使用ISO-8859-1编码的文本以UTF-8编码打开,都可能出现乱码。

  2. 编码设置错误:在处理文本数据时,未正确设置或指定字符编码方式,导致字符集解析错误,从而产生乱码。

  3. 字符编码格式损坏:当文本数据在传输或存储过程中发生错误或损坏时,可能导致部分或全部字符的编码信息丢失或改变,从而导致乱码。

  4. 显示环境不支持:有时,虽然文本数据本身没有问题,但是显示或渲染该文本的环境(例如操作系统、文本编辑器、浏览器等)不支持所需的字符集编码,导致乱码显示。

  5. 特殊字符处理不当:一些特殊字符,如控制字符、非打印字符、Unicode私用区字符等,可能在某些环境下无法正常显示,从而引发乱码问题。

为避免乱码问题,可以采取以下措施:

  1. 确保在不同的处理步骤中使用相同的字符集编码方式,尤其是在输入、输出、存储和传输文本数据时。

  2. 在进行文本处理和字符操作时,明确指定正确的字符集编码,以避免系统或程序默认编码引起的问题。

  3. 对于需要传输或存储的文本数据,可以采用兼容性较好的字符编码方式(例如UTF-8),以确保多平台间的互通。

  4. 对于显示乱码的情况,可以尝试更改显示环境的字符集设置或使用支持所需字符集的软件工具。

  5. 在处理特殊字符时,注意字符集的支持情况,并进行适当的转义或编码处理。

java有以下方法指定编码

  1. getBytes() 使用平台默认的字符集编码方式将字符串转换为字节数组。
    String str = "Hello, World!";
    byte[] bytes = str.getBytes();
    

  2. getBytes(String charsetName) 使用指定的字符集编码方式将字符串转换为字节数组。
    String str = "你好,世界!";
    byte[] bytes = str.getBytes("UTF-8");
    

    需要注意的是,getBytes() 方法会抛出 UnsupportedEncodingException 异常,如果指定的字符集不支持或不存在,可以选择捕获该异常或进行适当处理。

使用构造函数创建字符串 可以使用 String 类的构造函数,将字节数组或指定字符集编码的字节数组转换为字符串。

byte[] bytes = {72, 101, 108, 108, 111};  // "Hello" 的 ASCII 编码
String str = new String(bytes);  // 默认使用平台默认字符集进行解码
System.out.println(str);  // 输出:Hello

byte[] utf8Bytes = {0xE4, 0xBD, 0xA0, 0xE5, 0xA5, 0xBD};  // "你好" 的 UTF-8 编码
String utf8Str = new String(utf8Bytes, "UTF-8");  // 指定 UTF-8 字符集进行解码
System.out.println(utf8Str);  // 输出:你好

什么是字符集
bisal的专栏
04-29 1万+
这是杂货铺的第468篇文章无论是数据库,还是应用服务器,有时会碰见字符集的问题,就有些懵圈。看见CSDN转载了程序员乔戈里的一篇文章,用漫画的形式,讲解了各种字符集的知识...
字符集
baidu_36583119的博客
11-24 1517
字符集字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。 字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。 计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储
安装系统的中文字符集
最新发布
zhangyanling316的博客
05-11 152
locale -a |grep zh #查看系统是否安装中文字符集,就是步骤一的locale命令的参数使用。#LC_ALL不是一个系统变量,是一个宏,可以替换所有LC_*的值,除了系统变量LANG的。locale #查看使用的字符集信息,下图就是标准的英文,UTF-8的编码。#LANG是优先级最低的变量,当LC_*没有默认值的时候,会用LANG代替。步骤二:查看系统有没有中文字符集“zh_CN.UTF-8”echo $LANG #取到的值就是红框里面的。步骤三:没有的情况下,安装中文组件。
字符集与字符编码那些事
qq_38309645的博客
03-16 1459
生活中,我们使用着各种各样的字符,比如数字、字母、汉字,甚至还有表情,比如????。平时,我们习惯使用输入法输入字符,所以我们不需要了解字符底层的一些知识,比如字符的存储、字符的编码转换等,但也正因如此,我们常常面对乱码的问题而感到手足无措。 今天,这篇文章将给你带来字符集及字符编码的一些知识,让你摆脱有关字符编码的一切烦恼!
【精炼易懂】字符集、编码、乱码问题、ASCII、GBK、Unicode、UTF-8详解+实例说明
是谢添啊
10-21 2157
编码与解码,字符在计算机底层的存储形式,乱码问题详解(实例演示),乱码神兽锟斤拷的由来
字符集介绍
凉云半的博客
10-20 675
字符编码介绍 一、ANSI美国国家标准学会(AMERICAN NATIONAL STANDARDS INSTITUTE: ANSI) ASCII编码(American Standard Code for Information Interchange,美国信息互换标准代码) 美国兴起计算机初期的编码,没有考虑第三世界国家的语言 二、DBCS(Double Byte Charecter Set 双字节字符集) GB2312 是对 ASCII 的中文扩展 GBK 包括了 GB2312 的所有内容,同时又增加了近
Oracle 字符集详解
07-22
Oracle 字符集详解,包括查看,修改,导入导出,转换原理
基于mysql 5.5 设置字符集问题的详解
12-15
设置字符集时,分别在 [client]、[mysql] 和 [mysqld] 下设置 default-character-set=utf8 ,但是出现以下问题: 一个个排查,发现是在 [mysqld] 下设置 default-character-set=utf8 导致的。查看/var/lib/mysql/...
oracle查看字符集和修改字符集使用详解
09-10
Oracle字符集数据库管理系统Oracle中用于表示文本数据的重要组件。它决定了如何将字符编码为字节,进而影响数据的存储、处理和检索。Oracle字符集分为单字节和多字节,以满足不同语言和地区的需要。本文将深入探讨...
深入Oracle字符集的查看与修改详解
09-10
Oracle字符集数据库系统中非常关键的一个概念,它决定了数据如何被存储、处理和显示。本文将深入探讨Oracle字符集的查看与修改,帮助你更好地理解和应用这些知识。 首先,Oracle字符集是一个定义了字节数据如何...
什么是字符集
u013422435的专栏
01-08 790
字符集就是字符,尤其是非英语字符在系统内的编码方式,也就是通常所说的内码,所有的字符集都放在/usr/share/i18n/charmaps,所 有的字符集也都是用Unicode编号索引的。Unicode用统一的编号来索引目前已知的全部的符号。而字符集则是这些符号的编码方式,或者说是在网络 传输,计算机内部通信的时候,对于不同字符的表达方式,Unicode是一个静态的概念,字符集是一个动态的概
Windows修改cmd字符集
热门推荐
cyl937的专栏
06-12 1万+
在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容。在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即编码是中文字符集或者西文字符集。 如果想正确显示UTF-8字符,可以按照以下步骤操作: 1、打开CMD.exe命令行窗口 2、通过 chcp命令改变代码页,UTF-8的代码页为65001 ch
字符集和字符编码以及相关
astrotycoon
02-08 1605
为什么写本文 其实在我心中是一直知道有字符编码这么个概念存在的,只是从来没有遇到过关于它的相关问题,因此也就没有好好去了解它的动力。既然有这篇博文的存在,证明肯定是遇到字符编码的问题了。 事情是这样的,最近公司的产品需要支持短信功能,但是如果想要短信内容支持中文的话,通信模块规定必须使用UCS2字符编码方式,而程序用的是UTF-8字符编码方式,那么就需要将UTF-8字符编码转换成UCS2字符编...
HTML学习笔记3——字符集的作用
lxy95512的博客
01-10 451
<!DOCTYPE>文档类型声明,作用就是告诉浏览器使用哪种HTML版本来显示网页。 < !DOCTYPE html> 这句代码的意思是:当前页面采取的是HTML5版本来显示网页。 注意: 1. <!DOCTYPE>声明位于文档中的最前面的位置,处于<html>标签之前。 2. <!DOCTYPE>不是一个HTML标签,它就是文档类型声明标签。 lang语言种类 <html lang="zh-CN"&...
什么是字符集与编码?
三天饿九顿的Java萌新
12-19 912
文章目录用一个简单的例子理解字符集与编码再看什么是字符集,什么是编码方案(规则),什么是编码呢?ASCII码Unicode那么Unicode到底是什么呢?Unicode能直接存储吗?UTF-8(8-bit Unicode Transformation Format)UTF-8是怎么将Unicode编码为二进制的?例UTF-16(16-bit Unicode Transformation Format)UTF-16是怎么将Unicode编码为二进制的?例1例2Java中需要注意的地方为什么Java、C#、Ja
字符集如何查看?
小菜鸟的天地
12-07 4861
(一)字符集 什么是字符集? 字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。计算机要准确的处理各种字符集文字,需要进行字符编码,以
字符集与字符编码的那些事
caowei880123的专栏
12-10 1792
字符集与字符编码什么是字符集字符集有哪些? 字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。计算机要准确的处理各种字符集文字,需要进行
MySQL基础(下) 教学PPT.pptx
04-07
MySQL基础(下) 教学PPT

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 字节输出流 2021
  • Java Swing中的按钮和事件 1525
  • commons-io如何添加和常见的用法 1291
  • java四舍五入保留有效数字 1156
  • [c语言编程]三子棋 734

分类专栏

  • java学习知识总结 54篇
  • 后端浅了解 7篇

最新评论

  • java创建对象的内存过程和自动内存管理机制

    CSDN-Ada助手: 恭喜你撰写了第8篇博客!标题“java创建对象的内存过程和自动内存管理机制”非常吸引人。你对Java对象创建和内存管理的解析十分深入,并且能够将这些复杂的概念用简洁明了的方式传达给读者。我非常期待你未来的创作。 考虑到你在这篇博客中的出色表现,我想提供一个创作建议给你。或许你可以进一步探讨如何有效地使用Java内存管理机制,例如GC(Garbage Collection)的工作原理和最佳实践。这个话题对于许多Java开发者来说非常有价值,同时也能够帮助读者更好地理解Java中对象的创建和销毁过程。 希望你能继续保持谦逊的态度,并继续分享你的知识和见解。再次祝贺你,期待你的下一篇博客!

  • 包装类和基本数据类型

    CSDN-Ada助手: 恭喜你写下了第9篇博客!标题“包装类和基本数据类型”非常吸引人。你对这个主题的深入探讨无疑能够帮助读者更好地理解包装类和基本数据类型的区别和应用。接下来,我建议你可以考虑探索更多关于包装类和基本数据类型的实际应用案例,以及它们在不同编程语言中的差异。这将进一步丰富你的博客内容,并为读者提供更多的实用信息。期待你下一篇博客的发布!

  • 串池的概念

    CSDN-Ada助手: 恭喜您写下了第10篇博客!标题《串池的概念》引起了我的兴趣。您在这篇博客中对串池的概念进行了探讨,展示了您对这个话题的深入理解。我很欣赏您对于技术概念的解析,这对读者来说是非常有价值的。 在接下来的创作中,我建议您可以进一步扩展您的观点,比如分享一些实际应用中串池的案例,或者提供更具体的指导,以帮助读者更好地理解和应用串池的概念。此外,您还可以探讨一下串池与其他相关技术的关系,为读者提供更全面的知识。 总之,我期待着您未来更多的博客作品。感谢您对读者的付出,您的谦虚态度和深入的知识让您成为一个值得关注和学习的博主。祝您创作愉快,继续保持优秀的创作水平!

  • 复制粘贴的过程中操作系统做了什么

    CSDN-Ada助手: 恭喜您撰写了第11篇博客!标题“复制粘贴的过程中操作系统做了什么”非常引人瞩目,让读者对操作系统内部工作过程产生了浓厚的兴趣。我对您持续创作的努力表示赞赏。 在下一步的创作中,我建议您可以进一步深入探讨操作系统在复制粘贴过程中的具体机制和原理。您可以介绍不同操作系统的实现方式,以及它们在保证粘贴精确性和速度方面的差异。同时,您还可以探索一些实际应用场景,比如复制粘贴大量数据时操作系统的处理方式,或者在不同文件类型之间进行复制粘贴时的挑战等等。 继续保持努力,您的深入研究和分享对于读者来说将是一次受益匪浅的学习之旅。期待您未来更多精彩的博客!

  • JMenuBar容器

    CSDN-Ada助手: 恭喜您写了第12篇博客,题为“JMenuBar容器”。很高兴看到您持续创作并分享有关这个主题的知识。您在这篇博客中对JMenuBar容器做了很好的讲解,让读者更深入地了解了它的作用和使用方法。接下来,我建议您可以进一步探讨一些与JMenuBar容器相关的实际应用案例,例如如何在实际项目中使用它来增强用户体验或提高界面的交互性。期待您的下一篇博客,谦虚之心将使您的创作更加出色!

大家在看

  • 《每天5分钟用Flask搭建一个管理系统》第2章:项目结构与配置
  • LBM-IBM-DEM相关论文分享1 8
  • 亏钱、踩坑总结的经验之:盲盒小程序 56
  • 初阶 《操作符详解》11. 下标引用、函数调用和结构成员 84
  • 高效的Java爬虫实战:网页数据抓取技巧分享

最新文章

  • 系统学习git
  • Linux操作系统第二章
  • Linux操作系统第一章--常见的命令
2023年69篇
2022年2篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

哆哆女性网学校广播系统花店起名字公司八字起姓名大全四合院起名担保融资牧童骑黄牛歌声振林樾是哪首诗白钢店起名女孩起名用尧字好吗小顽童全集起名浩是男孩别惹蚂蚁重卡之家便利店起名创意梅起名光明与黑暗诸神的遗产ssport扫描工具张桉宁起名专家五行缺金公司起名能补吗迹组词八字成语起名物业公司起名大全轮胎批发市场门店起名网站情侣qq秀4月5日蔡氏起名字大全女孩车水马龙的意思柳擎宇权力巅峰全文免费阅读正版撩乱的裸舞曲棋牌室起店名淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化