ASCII、Unicode和UTF字符编码区别

计算机的CPU是由晶体二极管组成,只有开关两种状态,因此计算机只能识别0和1。计算机的一个开或关状态称为一个bit,若干个bit可以组成最基本的存储单元byte,因此人类的各种语言就可以用byte存储起来并约定一一对应表示,这种以二进制来表示符号的过程就叫做编码。

1、ASCII(American Standard Code for Information Interchange)编码是用于显示现代英语与部分西欧语言的一套编码,7或8位,只包含英文字符、数字和英文的一些标点符号等。

2、Unicode是能够表示全世界所有符号,被称为万国码。由于英文字符只用一个字节(两个bit以上)就可以表示,对于像汉字这样的东亚文字,常用汉字就有6000多个,用单个字节就无法表示,因此用两个字节来表示,如汉字 '中' 在中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。Unicode是用多个字节来表示一个字符,而英文字符只有一个字节就可以表示,所以必有字节为0,造成了空间的浪费。

3、UTF,是一种针对Unicode的可变长度字符编码,是Unicode的升级版。互联网出现后,为解决unicode如何在网络上传输的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义,UTF-8就是每次8个位传输数据,而UTF-16就是每次16个位。UTF-8就是在互联网上使用最广的一种unicode的实现方式,这是为传输而设计的编码,并使编码无国界,这样就可以显示全世界上所有文化的字符了。

有时候用matlab读取txt文件时,会出现“锘”的错误提示,这是因为文件的编码方式为UTF-8 with BOM,不同于UTF-8编码的是,它会在文件头行添加“EF BB BF”这三个字节,而EF BB恰好表示锘字,因此在保存文件时要选择UTF-8编码方式。可以选择用Ultraedit或者notepad更改编码方式。

有时候用GMT的psxy等读取文件的命令画线段时,会出现下面的错误提醒,这表示此时读取的文件编码方式很可能是UTF-8 with BOM,这时候读取文件也会极慢。

psxy (GMT_prep_tmp_arrays): Error: Could not reallocate memory [256.00 Gb, 34359738368 items of 8 bytes]

psxy: Processing input table data
ERROR: Caught signal number 11 (Segmentation fault) at
/usr/lib/x86_64-linux-gnu/libgmt.so.5(GMT_fix_up_path+0xb1)[0x7f0558d05ce1]
[0x0]
Stack backtrace:
/usr/lib/x86_64-linux-gnu/libgmt.so.5(sig_handler+0x169)[0x7f0558c50739]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f0558a0e390]
/usr/lib/x86_64-linux-gnu/libgmt.so.5(GMT_fix_up_path+0xb1)[0x7f0558d05ce1]
/usr/lib/x86_64-linux-gnu/libgmt.so.5(GMT_psxy+0x4b62)[0x7f0558e7ea52]
/usr/lib/x86_64-linux-gnu/libgmt.so.5(GMT_Call_Module+0xc0)[0x7f0558c5dbe0]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值