Linux上的文件以 \001 作为分隔符时,下载后用notePad++打开时看到的SOH,以 \002 作为分隔符时,下载后用notePad++打开时看到的STX,以 \003 作为分隔符时,下载后用notePad++打开时看到的ETX;"\001" “\002” "\003"分隔是程序代码中进行解析需要的。所以notePad++打开后显示的分隔符正常。

ASCII编码:Linux&Windows
  我们的服务器为linux系统,日志中的字段通常会用不同分隔符来做分隔,在不同操作系统编码格式下查看也会有不同的体现,甚至会出现所谓的乱码。我在xshell5下常用的编码格式Unicode(UTF-8)和默认语言。通常xshell5的默认语言能查看到分隔符隔开的字段,而utf-8不能。在网上查了下\001作为分隔符的日志,从linux终端复制出来用notePad打开时看到的SOH,而\002分隔的,从终端复制到编辑器是里STX。。。
  
我在查看日志时,大多从linux终端(默认语言下)复制到notePad++里,再用编辑器的替换功能,按分隔符换行,对比各个字段。如需调用接口进行插入,则在notepad++里将分隔符替换成"\001"之类写入时的分隔符,进行写入。

1 ASCII码

在计算机内部,所有的信息最终都表示为一个二进制的字符串,每一个二进制位(bit)有0和1两种状态,因此八个二进制就可以组合出2的8次方=256种状态,被称为一个字节(byte),即,一个字节可以用来表示256种不同的状态,从00000000到11111111。上个世纪60年代,美国指定了一套字符编码,对英语字符和二进制位之间的关系,做了统一规定。被称为ASCII码。ASCII一共规定了128个字符的编码,占用一个字节的后7位,最前面的1位统一规定为0。比如空格"SPACE"是32,即00100000.

英语用128个符号编码就够了,但是其他语言,128个符号并不能满足需求。另不同的国家有不同的字母。哪怕他们都是用256个符号的编码方式,代表的字母却不一样。因此编码格式是多种多样的。

2 Unicode

世家上存在如此多的编码方式,同一个二进制数字便可被解释成不同的符号。因为打开文件必须知道它的编码方式,否则用错误的方式解读,就会出现乱码。为什么电子邮件常常出现乱码?就是因为发信人和收信人使用的编码方式不一样。

可以想象,如果有一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。这就是Unicode,就像它的名字都表示的,这是一种所有符号的编码。Unicode当然是一个很大的集合,现在的规模可以容纳100多万个符号。每个符号的编码都不一样,比如,U+0639表示阿拉伯字母Ain,U+0041表示英语的大写字母A,U+4E25表示汉字"严"。具体的符号对应表,可以查询unicode.org,或者专门的汉字对应表。

然后Unicode也有它自己的问题,它只是一个符号集,只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。比如汉字"严"的unicode是十六进制数4E25,转成二进制足足有15位 100111000100101,也就是说这个符号的表示至少需要2个字节。表示其他更大的符号,可能需要3个字节或者4个字节,甚至更多。

这里就有两个严重的问题,第一个问题是,如何才能区别Unicode和ASCII?计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号呢?第二个问题是,英文字母只用一个字节表示就够了,如果Unicode统一规定,每个符号用三个或四个字节表示,那么每个英文字母前面必然有几个字节是0,对于存储来说,文本文件的大小会因此大出二三倍,这是无法接受的。他们造成的结果是:1)出现了Unicode的多种存储方式,也就是说有许多不同的二进制格式,可以用来表示Unicode;2)Unicode在很长的一段时间内无法推广,直到互联网出现。

3.UTF-8

互联网的普及,强烈要求出现一种统一的编码方式。UTF-8就是在互联网上使用最广的一种Unicode的实现方式。其他实现方式还包括UTF-16(字符用两个字节或四个字节表示)和UTF-32(字符用四个字节表示),不过在互联网上基本不用。重复一遍,这里的关系是,UTF-8是Unicode的实现方式之一。

UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

UTF-8的编码规则很简单,只有二条:

1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。

2)对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。

解读UTF-8编码非常简单。如果一个字节的第一位是0,则这个字节单独就是一个字符;如果第一位是1,则连续有多少个1,就表示当前字符占用多少个字节。

ASCII编码-控制字符
ASCII编码 控制字符(ASCII control characters)

转自:https://www.cnblogs.com/zhaoxd07/p/5012433.html

Notepad++分隔符显示SOH,STX,ETX相关推荐

  1. notepad中html自动补齐和标签,在Notepad ++中显示不匹配的html标签(Show unmatched html tags in Notepad++)...

    在Notepad ++中显示不匹配的html标签(Show unmatched html tags in Notepad++) 有没有办法在Notepad ++中突出显示不匹配的HTML标签? 例如, ...

  2. notepad++分隔符SOH

    \001作为分隔符的日志,从linux终端复制出来用notePad++打开时看到的SOH,而\002分隔的,从终端复制到编辑器是里STX 在程序代码中需要用:"\001" &quo ...

  3. notepad++ 分隔符SOH,在Linux中具体的对应字符

    从linux终端下载的文件用notePad++打开时看到的SOH分隔符,具体如下 有些网友说用\001可作为对应的Linux的分隔符,但是试了很多次不行. 当具体在linux中看了文件,发现其中的分隔 ...

  4. mathtype分隔符显示与隐藏

    显示mathtype分隔符 在mathtype进行公式自动编号时,通过添加章节分隔符进行编号的章节化(类似第三章的公式对应编号3-1,3-2). mathtype的分隔符默认是隐藏的,选择[MathT ...

  5. C语言标准库深度整理

    文章目录 引言 stdio.h 常量和指针 打开文件 FILE结构体 文件读写和定位 文件和路径的其他操作 get和put printf stdlib.h 内存分配 系统交互 system函数 字符串 ...

  6. C# utf-8编码时转换成shift-jis时出现乱码问题的处理

    最近在做项目时遇到导出CSV文件时,因客户方要求导出CSV文件一定要是shift-jis编码的CSV文件,而我们数据库存储时是unicode储存的,所以导出时会有很多?的编码,这是因为: 借住码表来解 ...

  7. 最完美的ASCII 表

    Text only语言: Ascii码表(全) ASCII Table (7-bit) (ASCII = American Standard Code for Information Intercha ...

  8. UniCode编码表,过滤不可见特殊字符

    不可见字符过滤方案 我是在项目中,使用freemarker生成word时,wordxml不能解析不可见字符,导出导出的word报错,不能正常打开. 于是我将freemarker解析后的xml进行了不可 ...

  9. 【Unicode编码表】UniCode编码表+转化器

    UniCode编码表[转载:https://www.cnblogs.com/csguo/p/7401874.html] Unicode编码则是采用双字节16位来进行编号,可编65536字符,基本上包含 ...

最新文章

  1. 大数据分布式集群搭建(插曲)
  2. kube-controller-manager 配置参数解读
  3. ITK:对图像中的结构进行分割
  4. C++类的Const数组的初始化
  5. json.stringify()与json.parse()的区别,json.stringify()的妙用
  6. NVelocity标签使用详解
  7. vs2017编写模板类出现以下错误时:没有与参数列表匹配的构造函数……
  8. 人到中年回头想想,生命中有几个真心疼爱你的人?
  9. C语言中可变参函数介绍与示例
  10. 图书管理数据库系统设计
  11. 5G网络能力开放的“接头人“——NEF
  12. 自学php的方法,自学php有哪些好的方法
  13. 电脑连上Jink后打开Altium Designer弹出Failed to measure TotalIRLen(6)
  14. 初二数学作业能用计算机算吗,很多小学生在做数学作业的时候用计算器,这样对吗?...
  15. 软硬件测试策略及方法
  16. sqlitespy可以打开MySQL吗_sqlitespy下载
  17. 认识越南语的发音体系
  18. 机器视觉自动数据标注方法
  19. 20条技巧,让Chrome超越Firefox (2010-11-16更新)
  20. “14寸手机”,华为葫芦里到底卖的什么药?

热门文章

  1. 在WPF里使用指纹认证(一、安装SDK)
  2. 我眼中的云计算——PaaS(平台即服务)
  3. matlab做TSP,MATLAB TSP问题
  4. Git和小乌龟的下载安装及简单使用
  5. SQL优化的详细步骤及工具的使用
  6. 【pandas 类库】
  7. LogicFlow 边的绘制与交互
  8. CF 71A [字符串统计]
  9. css雪碧图如何调整大小
  10. 仿京东图片放大镜动效