ansi编码

winCE下Unicode编码

吃可爱长大的小学妹 提交于 2020-04-01 04:47:32
Unicode :宽字节字符集 1. 如何取得一个既包含单字节字符又包含双字节字符的字符串的字符个数? 可以调用Microsoft Visual C++的运行期库包含函数_mbslen来操作多字节(既包括单字节也包括双字节)字符串。 调用strlen函数,无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。 2. 如何对DBCS(双字节字符集)字符串进行操作? 函数 描述 PTSTR CharNext ( LPCTSTR ); 返回字符串中下一个字符的地址 PTSTR CharPrev ( LPCTSTR, LPCTSTR ); 返回字符串中上一个字符的地址 BOOL IsDBCSLeadByte( BYTE ); 如果该字节是DBCS字符的第一个字节,则返回非0值 3. 为什么要使用Unicode? (1) 可以很容易地在不同语言之间进行数据交换。 (2) 使你能够分配支持所有语言的单个二进制.exe文件或DLL文件。 (3) 提高应用程序的运行效率。 Windows 2000是使用Unicode从头进行开发的,如果调用任何一个Windows函数并给它传递一个ANSI字符串,那么系统首先要将字符串转换成 Unicode,然后将Unicode字符串传递给操作系统。如果希望函数返回ANSI字符串,系统就会首先将Unicode字符串转换成ANSI字符串

宽字符,Ansic和Unicode

≯℡__Kan透↙ 提交于 2020-04-01 04:23:15
电脑发展的初期,只是在美国等英文国家使用,英文只有26个字母和其它字符,一个字节最多可以表示256个字符,如字母“A”用0x41(二进制01000001)表示,字母“a”用0x61(二进制01100001)表示。为了使各家电脑公司生产的电脑统一,美国搞了个国家标准ANSI,一直沿用至今,我们今天用的电脑普通情况下使用的都ANSI编码。 ANSI编码,每个字符占一个字节,但最多只能表示256个字符。 汉字等东亚语言字符怎么办呢?于是采用两个字节共同表示一个汉字的方法。二个字节理论上可以表示65535个字符。 因为ANSI标准是用一个字节的7个位表示一个普通字符,最高位为0(如字母“A”的二进制01000001),所以表示汉字就采用最高位为1来表示。如“中”字就是用0xD6、0xD0表示(二进制11010110、11010000)。 程序员判断一个字符是否为汉字,就是通过最高位是否为1来判断的。 但是,中国大陆的汉字表示方法叫GB码(中国国家标准,如GB2312),中国台湾、香港的汉字表示方法叫BIG5码(大五码,台湾一家民营公司提出),还有韩、日等字符,还是造成了计算机文字表示的不统一。 所以,在W98时代,电脑上网、收发邮件等经常出现乱码的现象(就是文字标准不统一造成的) ANSI编码字符,叫多字节字符 UNICODE编码,每个字符占二个字节。也叫万国码(一种国际标准字符集

winCE下Unicode编码

最后都变了- 提交于 2020-04-01 04:14:30
Unicode :宽字节字符集 1. 如何取得一个既包含单字节字符又包含双字节字符的字符串的字符个数? 可以调用Microsoft Visual C++的运行期库包含函数_mbslen来操作多字节(既包括单字节也包括双字节)字符串。 调用strlen函数,无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。 2. 如何对DBCS(双字节字符集)字符串进行操作? 函数 描述 PTSTR CharNext ( LPCTSTR ); 返回字符串中下一个字符的地址 PTSTR CharPrev ( LPCTSTR, LPCTSTR ); 返回字符串中上一个字符的地址 BOOL IsDBCSLeadByte( BYTE ); 如果该字节是DBCS字符的第一个字节,则返回非0值 3. 为什么要使用Unicode? (1) 可以很容易地在不同语言之间进行数据交换。 (2) 使你能够分配支持所有语言的单个二进制.exe文件或DLL文件。 (3) 提高应用程序的运行效率。 Windows 2000是使用Unicode从头进行开发的,如果调用任何一个Windows函数并给它传递一个ANSI字符串,那么系统首先要将字符串转换成 Unicode,然后将Unicode字符串传递给操作系统。如果希望函数返回ANSI字符串,系统就会首先将Unicode字符串转换成ANSI字符串

ASCII,ANSI,UNICODE,UTF-8,UNICOD BIG Endian 等字符编码问题

时光总嘲笑我的痴心妄想 提交于 2020-03-25 10:00:20
3 月,跳不动了?>>> 字符集简史: 在所有字符集中,最知名可能要数被称为ASCII的7位字符集了。它是美国信息交换标准委员会(American Standards Committee for Information Interchange)的缩写, 为美国英语通信所设计。它由128个字符组成,包括大小写字母、数字0-9、标点符号、非打印字符(换行符、制表符等4个)以及控制字符(退格、响铃等) 组成。 但是,由于他是针对英语设计的,当处理带有音调标号(形如汉语的拼音)的欧洲文字时就会出现问题。因此,创建出了一些包括255个字符的由ASCII扩展 的字符集。其中有一种通常被成为IBM字符集,它把值为128-255之间的字符用于画图和画线,以及一些特殊的欧洲字符。另一种8位字符集是ISO 8859-1 Latin 1,也简称为ISO Latin-1。它把位于128-255之间的字符用于拉丁字母表中特殊语言字符的编码,也因此而得名。 欧洲语言不是地球上的唯一语言,因此亚洲和非洲语言并不能被8位字符集所支持。仅汉语(或pictograms)字母表就有80000以上个字符。但是把 汉语、日语和越南语的一些相似的字符结合起来,在不同的语言里,使不同的字符代表不同的字,这样只用2个字节就可以编码地球上几乎所有地区的文字。因此, 创建了UNICODE编码。它通过增加一个高字节对ISO Latin

ANSI是什么编码?

Deadly 提交于 2020-03-16 12:40:08
用Notepad++创建一个文本文件text.txt,其默认编码格式为ANSI(乍看之下,还以为是ASCII呢),输入汉字居然不是乱码: 保存为test.txt,发送给你美国的同事Bob。他也用Notepad++,不幸的是,却发现你的文件内容是这样的: 也许你会认为:你用的是中文系统,能正常显示中文;他用的是英文系统,不能显示中文! 这么想,好像很有道理呢! 但是再细想一下: 一个系统显示乱码,说明它不支持这种编码格式(或者解码方式不对)。难道英文系统不支持ANSI?难道ANSI是一种中文编码? 如果你身边有一个韩文系统,也装一个Notepad++,默认还是ANSI编码,你可以输入“한국어”,发现也能正常显示: 但是你要输入“汉字”可能就会发现是乱码了... 通过这个反例,就可以说明 ANSI不是一种中文编码。那么,ANSI到底是什么编码? 用十六进制编辑器打开内容为“汉字”的test.txt文件: 你会发现:其中baba和d7d6正好是“汉”和“字”两个字的 GBK编码 值。 同样,用十六进制编辑器打开内容为“한국어”的test.txt文件: 你会发现:其中c7d1、b1b9和beee正好是“한”、“국”和“어”三个字符的 EUC-KR编码 值。 由此可以看出:其实ANSI并不是某一种特定的字符编码,而是在不同的系统中,ANSI表示不同的编码

“错误:编码GBK的不可映射字符”怎么破

白昼怎懂夜的黑 提交于 2020-03-08 04:39:39
第一篇尝试写博文,谬误之处,欢迎指正! 应该不是我一个人的JAVA老师不让用IDE,于是用记事本写,cmd命令行运行(程序中有中文输出) 以下是错误做法 网上很多说法改编码类型,去UE里找了半天也没看到在哪改,仔细检查操作过程,终于找到了问题所在 utf-8编码是unicode编码在网络之间传输时的一种“桥梁”编码。使其在网络之间传输时可以节约数据量。当保存为utf-8形式时,搜索文本里的中文根本找不到,再看编码选项中的ANSI选项 使用多个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文Windows操作系统中,ANSI 编码代表 GBK 编码。在使用记事本保存时,将编码改成ANSI,就好啦! 来源: CSDN 作者: 行铭决 链接: https://blog.csdn.net/weixin_43905108/article/details/104667509

Unicode、UTF8、GB2312、ANSI

爷,独闯天下 提交于 2020-03-06 13:23:41
来源: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.拓展字符集 后来科技发展,计算机在世界各国普及开来,英语地区还好,直接能显示英文

加密与解密学习笔记3-Windows与Unicode

前提是你 提交于 2020-02-11 18:36:50
windows 9x几乎都是使用ANSI字符串来进行所有内部操作。但也有少量函数支持Unicode的能力。 Win9x_Unicode.exe例子 #include <windows.h> #include <tchar.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdline, int iCmdShow) { MessageBox(NULL, TEXT("Windows 9x支持Unicode?"), TEXT("Hello"), 0); return 0; } 运行结果: 反汇编工具(W32Dasm)查看代码 :00411690 6A00 push 00000000 :00411692 68306B4100 push 00416B30 :00411697 68406B4100 push 00416B40 :0041169C 6A00 push 00000000 * Reference To: USER32.MessageBoxW, Ord:024Dh | :0041169E FF1598A04100 Call dword ptr [0041A098] :004116A4 3BF4 cmp esi, esp :004116A6 E859FAFFFF call

ANSI, UNICODE,UTF8编码的区别

蓝咒 提交于 2020-02-01 01:11:29
本地化过程中涉及到源文件和目标文件的传输问题,这时候编码就显得很重要。中文的网页和操作系统中通常采用ANSI编码,这也是微软OS的一个字符标准。对于ANSI,不同的国家和地区制定了不同的标准,由此产生了GB2312(简体中文),BIG5(繁体中文),JIS(日文)等各自的编码标准。但不同的ANSI编码在不同语言之间是不兼容的,所以对于不同的操作系统之间文件的传输,或者在同样的操作系统下,源文件语言不同于OS的语言文件的传输, 需要转换成UT8格式 。 具体区别: ANSI:16384 个字符。这就是 ANSI 字符标准。英文一个字节,中文两个字节 UNICODE: 使用两个字节对世界上几乎所有的语言进行编码 ( 0x0000 - 0xFFFF ), 65536 个字符 ,每种语言的代码段不 同, 两个字节 ( 英文、中文都是两个字节 ) 所表达的字符是唯一的,所以不同语种可以共存于文本中, 解决国际化的问题 UTF8 是 Unicode 一种压缩形式 ,英文 A 在 unicode 中表示为 0x0041 ,老外觉得这种存储方式太浪费,因为浪费了 50% 的空间, 于是就把英文压缩成 1 个字节, 成了 utf8 编码, 但是汉字在 utf8 中占 3 个字节,显然用做中文不如 ansi 合算 ,这就是中国的网页用作 ansi 编码而老外的网页常用 utf8 的原因。 在英文OS中

UNICODE与ANSI的区别

回眸只為那壹抹淺笑 提交于 2020-01-26 21:29:03
#include <iostream> #include <Windows.h> using namespace std; int main() { wchar_t * first= L"h"; wcout<<*first; getchar(); return 0; } 结果输出h 并区别以下代码: #include <iostream> #include <Windows.h> using namespace std; int main() { wchar_t * first= L"h"; cout<<*first;//非wcout getchar(); return 0; } 输出104 vc6,到vs2012.对字符的编码上多了好些转换的要求。 其它 是UNICODE与ANSI的区别。 UNICODE容器与ANSI容器大小不一,所以要转换。 电脑不是人类,底层只会区分0,1。 没有正确的转换,就显示出不同的解释,情况乐观的话,编译就通不过。 Unicode与Ansi的历史在百度上都可以找到 1,用单个中文来找比方,Ansi要用两个来拼(解码麻烦),Unicode里直接有对应的 2,C语言使用'/0'作为字符串结尾,而Unicode有很多字符都有一个字节为0,这样一来,C语言的字符串函数将无法正常处理Unicode 3,系统问题