首页 > 编程语言 >程序字符集知识

程序字符集知识

时间:2023-11-16 11:45:34浏览次数:33  
标签:字符 UTF 编码 字符集 知识 程序 gbk utf8

一、基础知识:

为什么采用中文编程不行?

https://mp.weixin.qq.com/s/v22aUQ-9ietJYdz0wMNUUQ

字符编码那点事:快速理解ASCII、Unicode、GBK和UTF-8

https://zhuanlan.zhihu.com/p/38333902

主要(分清)认识两个概念: 字符集、字符编码(规则) :

字符集(Charset):是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。

字符编码(Character Encoding):是一套法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其他东西的一个集合(如号码或电脉冲)进行配对。即在符号集合与数字系统之间建立对应关系,它是信息处理的一项基本技术。通常人们用符号集合(一般情况下就是文字)来表达信息。而以计算机为基础的信息处理系统则是利用元件(硬件)不同状态的组合来存储和处理信息的。元件不同状态的组合能代表数字系统的数字,因此字符编码就是将符号转换为计算机可以接受的数字系统的数,称为数字代码。

常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等。计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。

举例: 1、ASCII字符集就是128个字符图像, ASCII编码就是 0xxxxxxx 的数字编码;

            2、同样 GB2312字符集,和 GB2312字符编码规则, 这是两个东西,一个是图像,一个是编码,虽然名字都叫GB2312或GBK.

            3、Unicode字符集,对应的编码规则就比较多: UTF-16, UTF-8, UTF-16le、 UTF-16be、UT等等。

         支持原创: https://www.cnblogs.com/java2java/p/17835886.html

 

二、JAVA内部字符集流转

 

三、扩展:

刨根究底字符编码之七——ANSI编码与代码页

https://zhuanlan.zhihu.com/p/27136737        特殊: windows自创的ANSI字符编码规则,ANSI配合 windows系统的语言选项(CodePage)使用。

Linux 如何设置语言和字符集:

1、locale 命令

2、修改: /etc/locale.conf 系统配置文件等

四、实验:

 


此时未指定javac 编码方式, 默认使用系统语言对应的gbk, 结果报错gbk字符集编码里没有那个编码号,因为记事本保存的是UTF-8格式。

 

指定 -encoding utf8 后, javac 编码成功, java运行成功,此时理解其中过程: 1、 javac 将 utf8编码 转换成 utf-16编码,  java 运行时将 utf-16 转换为系统对应的字符集格式gbk 显示在界面上(此时就没有utf8什么事儿了)。

 

ps: 另一种解决方法是: 不指定 -encoding utf8 ,而是将源代码另存为 ANSI(GBK)格式。

linux测试:
       将GBK源码编译的class复制到linux, 使用java 运行,结果是都可以运行

 

 

因为class里已经是utf-16的unicode编码值了,java运行时可以根据算法自动转换成任意的输出(屏幕支持的)字符集。

由于目前console支持的字符集是utf8, 所以 输出指定file.encoding=gbk时,显示为乱码。

此时把console的字符集设置成gbk,那么gbk就显示正常了。但是输出指定file.encoding=utf8就显示乱码。只是显示的时候字符集支持的问题。
也就是说它是(输出指定file.encoding=gbk与console设定的字符集不一致)的问题,不是 jvm的问题。

 

扩展知识2:

 windows cmd console 窗口默认是 gbk, 但是 springboot 设置的打印日志字符编码为 UTF8 该怎么办?

此时:可设置windows bat文件中增加命令 chcp 65001   ,即将当前页面支持的字符集设置为utf8. 然后显示即可正常。

 

https://www.cnblogs.com/java2java/p/17835886.html

如果有帮到你,点个赞吧 O(∩_∩)O哈哈~ ~

标签:字符,UTF,编码,字符集,知识,程序,gbk,utf8
From: https://www.cnblogs.com/java2java/p/17835886.html

相关文章

  • uniapp 小程序获取当前经纬度,传递给后端
    //#ifdefMP-WEIXIN//定位方法getUserLocation:function(){var_this=this;wx.getSetting({success:(res)=>{//res.authSetting['scope.userLocati......
  • 做数据分析,我们需要懂多少excel知识?
    数据分析所需的Excel知识详解在进行数据分析工作时,Excel是一个非常常用且强大的数据处理工具。以下是数据分析中常用的Excel知识点和技巧的详细描述。1.基本操作在使用Excel进行数据分析之前,首先需要掌握Excel的基本操作,包括单元格的选择、复制粘贴、插入行列、删除等。这些......
  • 想快速进入人工智能领域的Java程序员?你准备好了吗?
    引言今天我们来探讨一下作为Java程序员,如何迅速融入人工智能的领域。,当前有一些流行的LLMs选择,例如ChatGPT、科大讯飞的星火、通义千问和文心一言等。如果你还没有尝试过这些工具,那么现在也不失为一个很好的机会,赶快体验一下吧。这些工具不仅能够为你的Java编程工作提供更多的可......
  • 35 岁实现财务自由,腾讯程序员手握2300万提前退休?
    每天行色匆匆,毫无生气的往返于公司与家的两点一线;承受着来自公司、部门的内卷,领导的PUA;相信,现下很多年轻人都会感慨什么时候才能实现财务自由,提前过上“退休生活”那么财务自由的标准是什么?最近看到一个有意思的帖子:一腾讯员工说自己35岁,存够2300万,懒得打工,提前养老退休了!引发......
  • Go程序生成ssl证书
    packagemainimport( "crypto/rand" "crypto/rsa" "crypto/x509" "crypto/x509/pkix" "encoding/pem" "math/big" "net" "os" "time")funcmain(){ max:=new(......
  • SQL常用知识点
    1.join多表连接查询innerjoin:只显示连接条件不为空的数据,如果on后面的连接数据为空则查询不到。selecta.name,b.namefromaaaasainnerjoinbbbasbona.id=b.idwherea.age=18andb.add='qwe'leftjoin:以表aaa为主表,会把连接之后......
  • 一些小知识
    Mysql查询性能优化总结1.设计表结构的时候按照雪花模型或者星形模型设计表结构;2.表字段类型里面的varchar替换为int来代替;3.对于经常需要联合查询的表,增加中间表;4.对经常查询的字段添加索引;5.查询优化,5.1只查询需要的字段,避免使用select*();5.2小表驱动大表,小的数据集......
  • 2023-2024 20231313《计算机基础与程序设计》第八周学习总结
    2023-202420231313《计算机基础与程序设计》第八周学习总结作业速达作业课程班级链接作业要求计算机基础与程序设计第八周学习总结作业内容《计算机科学概论》第9章《C语言程序设计》第7章并完成云班课测试,功能设计与面向对象设计,面向对象设计过程,面向对象语......
  • 线性代数导论MIT第二章知识点
    线性代数导论MIT第二章求解线性方程组1.向量与线性方程组  2.不同角度看方程式也就是矩阵的乘法原型:以行来看方程式就是原式以列来看方程式以矩阵来看方程式 3.消元法的概念 4.消元法的崩溃 两条线互相平行就无法消元 两条线无限多的点  5.3x3......
  • windows系统使用终端和goland编辑器打包golang程序方法
    上一篇文章说了,windows系统,如何使用goland编辑器打包exe和linux程序,这篇文章再补充一下,使用终端和goland编辑器打包的对比情况。这里的终端可以是,cmd、WindowsPowerShell、MINGw64这里,我使用goland编辑器里面的Terminal,也就是WindowsPowerShelll来操作1、goland编辑器打......