前言

本文摘抄,关于ANSIUTF-8和Unicode的介绍。

好记性不如烂笔头

正文

ANSI

ANSI字符串,英文占一个字节,汉字2个字节,以一个\0结尾,常用于txt文本文件

Unicode

Unicode字符串每个字符(汉字、英文字母)都占2个字节,以2个连续的\0结尾。

NT操作系统内核用的是这种字符串,常被定义为typedef unsigned short wchar_t; 所以我们有时常会见到什么char无法转换为unsigned short之类的错误,其实就是unicode。

Unicode little endian

最低位地址存放低位字节,可称低位优先,内存从最低地址开始按顺序存放(低数位数字先写)。

最低位字节放最前面。

Unicode big endian

最低位地址存放高位字节,可称高位优先,内存从最低地址开始按顺序存放(高数位数字先写)。

最高位字节放最前面。

UTF8

UTF8是Unicode一种压缩形式,英文A在unicode中表示为0x0041,老外觉得这种存储方式太浪费,因为浪费了50%的空间,于是就把英文压缩成1个字节,成了utf8编码,但是汉字在utf8中占3个字节,显然用做中文不如ANSI合算。

签名BOM

BOM 是 Byte Order Mark 的缩写(字节顺序标记),是编码方案里用于标识编码的标准标记。

ANSI 文件没有 BOM

UTF-8 文件的 BOM 为:EF BB BF,不过 UTF-8 文件可以有 BOM,也可以没有 BOM

Unicode big endian 文件的 BOM 为:FE FF

Unicode little endian 文件的 BOM 为:FF FE

参考文章

  1. ANSI、UTF-8、Unicode(little endian)、Unicode big endian的互相转换

相关文章

暂无评论

none
暂无评论...