ansi编码

Ansi与Unicode及慎用W2A等

允我心安 提交于 2019-12-04 20:54:47
Ansi与Unicode简要说明及各自的优缺点 他们是两种字符的编码格式,Ansi=窄字节,Unicode=宽字节,Ansi用char格式表示一个字符,占用一个字节的存储空间,最多表示255个字符, 表示英文还可以,但对于中文、日文、韩文等语言来说就不够用了,所以如果你的程序是Ansi编码的话, 那么你写的中文语言的程序拿到日文、韩文等系统上面就会出现乱码。所以有了Unicode,用二个字节去表示一个字符,格式是 unsigned short,被定义成 wchar_t 格式 这样就可以表示世界上绝大多数的语言了!但有利就有弊,缺点呢?就是空间占用翻倍了,网络传输的数据量也增大了…… ◆ vc++ 6.0 默认为Ansi编码,vs2005、vs2008、vs2010 等默认都是Unicode编码,当然可以进行工程的设置从而进行编码的转换,见演示! ◆ 就我个人观点:还是建议大家使用Unicode宽字节的编码格式,具体见下面: ◆ 系统提供了两种类型的 API 函数,见:user32.dll 中的 MessageBox 函数,其实 MessageBox 他只是一个宏,他对应的两个版本的函数分别为:MessageBoxA 和 MessageBoxW,你在使用的时候系统会根据是否定义了_UNICODE 宏来进行判断该使用哪个版本的函数!如果你的工程没有定义_UNICODE 宏

刨根究底字符编码之十六——Windows记事本的诡异怪事:微软为什么跟联通有仇?(没有BOM,所以被误判为UTF8。“联通”两个汉字的GB内码,其第一第二个字节的起始部分分别是“110”和“10”,,第三第四个字节也分别是“110”和“10”)

拟墨画扇 提交于 2019-12-03 08:57:31
1. 当用一个软件(比如Windows记事本或Notepad++)打开一个文本文件时,它要做的第一件事是确定这个文本文件究竟是使用哪种编码方式保存的,以便于该软件对其正确解码,否则将显示为乱码。 一般软件确定文本文件编码方式的方法有如下三种: 检测文件头标识; 提示用户手动选择; 根据一定的规则自行推断。 2. 文件头标识一般指的是字节顺序标记BOM(Byte Order Mark),位于文件的最开始。当打开一个文本文件时,就BOM而言,有如下几种情形: BOM为:EF BB BF ——表示编码方式为UTF-8; BOM为:FF FE ——表示编码方式为UTF-16LE(小端序); BOM为:FE FF ——表示编码方式为UTF-16BE(大端序); BOM为:FF FE 00 00 ——表示编码方式为UTF-32LE(小端序); BOM为:00 00 FE FF ——表示编码方式为UTF-32BE(大端序); 没有BOM ——要么显式地提示用户手动选择一种编码方式,要么隐式地由软件按规则自行推断出编码方式。 3. 接下来,是见证诡异怪事的时刻。 当你在简体中文版的Windows记事本里新建一个文件,输入“联通”两个汉字之后,保存为一个txt文件。然后关闭,再次打开该txt文件后,你会发现刚才输入并保存的“联通”两个汉字竟然莫名其妙地消失了,取而代之的是几个乱码。如下图所示。

ANSI和GB2312的区别

匿名 (未验证) 提交于 2019-12-03 00:34:01
这几天工作中用到不少字符集,Unicode、utf-8、GB2312等,但是在windows命令行里敲notepad进入文本编辑页面。保存时需要选择编码方式,但是不存在GB,却有ANSI,于是纳闷,回来一查,才恍然大悟:原来在简体中文系统下,ANSI 编码代表 GB2312 编码。   为使计算机支持更多语言,通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符。比如:汉字 ‘中’ 在中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。   不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。   不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。 转载请标明出处: ANSI和GB2312的区别 文章来源: ANSI和GB2312的区别

Qt读取ANSI格式文件――利用QTextCodec将其他编码格式转换为Unicode格式

匿名 (未验证) 提交于 2019-12-03 00:33:02
将GBK编码(ANSI的简体中文编码)转换为Unicode编码格式: QByteArray encodedString = "..."; QTextCodec *codec = QTextCodec::codecForName("GBK"); QString string = codec->toUnicode(encodedString); 将Unicode编码转换为GBK编码格式: QString string = "..."; QTextCodec *codec = QTextCodec::codecForName("GBK"); QByteArray encodedString = codec->fromUnicode(string); 下面给出读取GBK编码的TXT文件的示例代码: QFile file("FileName"); QTextCodec *codec = QTextCodec::codecForName("GBK"); QString line = codec->toUnicode(file.readLine()); 文章来源: Qt读取ANSI格式文件――利用QTextCodec将其他编码格式转换为Unicode格式

ANSI格式编码、UTF-8格式编码和UTF-8无BOM格式编码三种不同编码趣味探讨

匿名 (未验证) 提交于 2019-12-03 00:22:01
在上一篇文中,涉及到三种不同编码方式,ANSI格式编码、UTF-8格式编码以及UTF-8无BOM格式编码,这里我对三者进行 简要的探讨。 Windows:默认为 ANSI,记事本程序另存为处,可以设置其他编码格式; Ubuntu:默认为 UTF-8 1)ANSI ANSI 编码表示英文字符时用一个字节,表示中文用两个或四个字节 ―― 这带来了存储空间的减少,但却带来的格式的 不统一和混乱。 ANSI是一种字符代码,为使计算机支持更多语言,通常使用 0x00~0x79 范围的 1 个字节来表示 1 个英文字符。 范围的 2 个字节来表示 1 个字符。比如:汉字 ‘中’ 在中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。 不同的国家和地区制定了不同的标准,由此产生了 GB2312、GBK、GB18030、Big5、Shift_JIS 等各自的编码标准。 这些使用多个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。 在简体中文 Windows 操作系统中,ANSI 编码代表 GBK 编码; 在繁体中文 Windows 操作系统中,ANSI 编码代表 Big5; 在日文 Windows 操作系统中,ANSI 编码代表 Shift_JIS 编码; 2)UTF-8格式编码和UTF-8无BOM格式编码 BOM――Byte Order Mark,就是字节序标记

编码格式简介(ANSI、GBK、GB2312、UTF-8、UTF-16、GB18030和 UNICODE)

我只是一个虾纸丫 提交于 2019-12-01 11:33:10
很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物,他们把这称为”字节”。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去,他们就把这机器称为”计算机”。 开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。他们把其中的编号从0开始的32种状态分别规定了特殊的用途,一但终端、打印机遇上约定好的这些字节被传过来时,就要做一些约定的动作。遇上 00×10, 终端就换行,遇上0×07, 终端就向人们嘟嘟叫,例好遇上0x1b, 打印机就打印反白的字,或者终端就用彩色显示字母。他们看到这样很好,于是就把这些0×20以下的字节状态称为”控制码”。 他们又把所有的空格、标点符号、数字、大小写字母分别用连续的字节状态表示,一直编到了第127号,这样计算机就可以用不同字节来存储英语的文字 了。大家看到这样,都感觉很好,于是大家都把这个方案叫做 ANSI 的”Ascii”编码(American Standard Code for Information Interchange,美国信息互换标准代码)。当时世界上所有的计算机都用同样的ASCII方案来保存英文文字。 后来计算机发展越来越广泛,世界各国为了可以在计算机保存他们的文字,他们决定采用127号之后的空位来表示这些新的字母

为什么ArcGIS 10.3导出 Shapefile的字段名会被截断成3个汉字?解决方法如下

喜欢而已 提交于 2019-12-01 04:55:01
为什么ArcGIS 10.3导出 Shapefile的字段名会被截断成3个汉字?低版本中不是至少可以存储4个汉字吗? 原因 这个问题仍然与编码类型有关。 ArcGIS 10.2 以及更早的版本,ArcGIS写shapefile的时候,遇到中文默认使用Windows当前语言 字符集编码(也称 代码页/CodePage/OEM CodePage),例如中文一般使用的是 CodePage 936(GBK)。 ArcGIS 10.2.1 以及之后的版本,ArcGIS写shapefile的时候,默认使用的是 UTF-8 编码类型。 这两种编码类型存储汉字所使用的字节数是不相同的,上面的关键字中我也给出了 wiki 的链接,有兴趣点进去看看详情。简言之,shapefile自身的限制是字段为9个字节,CP936编码下汉字通常为双字节存储,因此可以存储 9/2=4 个汉字;UTF-8 编码下汉字至少需要3个字节存储,因此最多只能存储 9/3=3 个汉字了。 <ignore_js_op> 举个例子,在Python命令行中,我们求一下 Unicode字符串的长度就可以真相大白。 <ignore_js_op> 解决方法 Perfect Solution: 使用地理数据库,放弃shapefile,避免各种截断问题,这也是存储地理数据的康庄大道。 但是,shapefile的拥趸说

Unicode、UTF8、GB2312、ANSI

偶尔善良 提交于 2019-11-29 09:38:22
来源:https://blog.csdn.net/osanwenyu/article/details/48439461 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/oSanWenYu/article/details/48439461 一、前言 汉字编码是让人比较头疼的一块,最近下定决定把他搞懂。网上翻了个遍,讲得详细透彻的让人头疼看不下去,讲得通俗的不够详细,只言片语。更有甚者开篇即讲Unicode是啥,多少个字符,GB2312巴拉巴拉,多少个汉字,全然不讲应用场景,不理知识接受的先后,遂结合翻看过的几篇写一写心得。 二、字符编码的发展 ASCII --> 拓展字符集 -->GB2312(中国大陆) -->GBK - -> unicode 1.ASCII 最早的时候计算机只在美国使用,人民解决英文与二进制的映射关系,发明了ASCII编码,将所有大小写英文字母以及常用的英文标定符号编进去。还有一些并不代表文字意义但又经常要表达的操作也加了进去,这就是控制字符,如换行、回车、制表符等等。这时发现所有的字符都编进去了,才占用了127个,每个字符占用一个字节,这是一套完美的编码方式。 2.拓展字符集 后来科技发展,计算机在世界各国普及开来,英语地区还好,直接能显示英文

运行bokeh服务器出现gbk codec can't decode byte 0xb0 in position 342: illegal multibyte sequence

浪子不回头ぞ 提交于 2019-11-27 08:47:18
解决成功 只需要把代码文件 基本本打开后另存为编码处改成ANSI,读取文件的地方不需要写编码格式,写了也会错误,只需要改编码为ANSI就可以了 运行bokeh服务器把文件房子cmd文件下面就可以了,之后输入bokeh serve --show (这个地方就是文件名)bokeh serve --show insurance_graph1.py 例如 bokeh serve --show bokeh serve --show insurance_graph1.py 来源: https://www.cnblogs.com/jianchiai/p/11355559.html

字符编码ANSI和ASCII区别、Unicode和UTF-8区别

这一生的挚爱 提交于 2019-11-26 16:15:02
一.位: 计算机存储信息的最小单位,称之为位(bit),音译比特,二进制的一个“0”或一个“1”叫一位。 二.字节 字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位,8个二进制位组成1个字节。在ASCII码中,一个标准英文字母(不分大小写)占一个字节位置,一个标准汉字占二个字节位置。 三.字符 字符是指计算机中使用的文字和符号,比如“1、2、3、A、B、C、~!·#¥%…*()+”等等。 四.ASCII码 先从最简单的ASCII说起吧,这个大家也熟悉:全名是American Standard Code for Information Interchange, 叫做“美国信息交换标准码”。ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。ASCII码是目前最普及的一种字符编码,它扎根于我们的互联网,操作系统,键盘,打印机,文件字体和打印机等。ASCII表如下: 当然,从这个名字美国信息交换标准码来看,ASCII码只适用于美帝,要是用在美帝之外的国家,就不能满足需求了。 ANSI码 ANSI编码是一种对ASCII码的拓展:ANSI编码用0x00~0x7f (即十进制下的0到127)范围的1 个字节来表示 1 个英文字符,超出一个字节的 0x80~0xFFFF 范围来表示其他语言的其他字符。也就是说