�����Ķ�������ԱȤζ���̸̸Unicode��������ԱȤζ���̸̸Unicode����

2005-05-13 10:06 ������ ���ߣ�fmddlmyy ���α༭��xietaoming

��������һƪ����Աд������Ա��Ȥζ�����νȤζ��ָ���ԱȽ����ɵ��˽�һЩԭ���������ĸ������֪ʶ�������ڴ�RPG��Ϸ��������������ƪ���µĶ������������⣺

��������һ��

����ʹ��Windows���±��ġ�����Ϊ����������GBK��Unicode��Unicode big endian��UTF-8�⼸�ֱ��뷽ʽ���໥ת����ͬ����txt�ļ���Windows������ʶ�����뷽ʽ���أ�

�����Һ���ǰ�ͷ���Unicode��Unicode big endian��UTF-8������txt�ļ��Ŀ�ͷ�����������ֽڣ��ֱ���FF��FE��Unicode��,FE��FF��Unicode big endian��,EF��BB��BF��UTF-8��������Щ�����ǻ���ʲô��׼�أ�

������������

�������������Ͽ���һ��ConvertUTF.c��ʵ����UTF-32��UTF-16��UTF-8�����ֱ��뷽ʽ���໥ת��������Unicode(UCS2)��GBK��UTF-8��Щ���뷽ʽ����ԭ�����˽⡣����������������Щ��Ϳ���벻����UTF-16��UCS2��ʲô��ϵ��

�������˲��������ϣ����㽫��Щ����Ū�����ˣ�˳��Ҳ�˽���һЩUnicode��ϸ�ڡ�д��һƪ���£��͸��й��������ʵ����ѡ�������д��ʱ��������ͨ���׶�����Ҫ������֪��ʲô���ֽڣ�ʲô��ʮ�����ơ�

0��big endian��little endian

����big endian��little endian��CPU�������ֽ����IJ�ͬ��ʽ�����硰�����ֵ�Unicode������6C49����ôд���ļ���ʱ�������ǽ�6Cд��ǰ�棬���ǽ�49д��ǰ�棿������6Cд��ǰ�棬����big endian�����ǽ�49д��ǰ�棬����little endian��

������endian�������ʳ��ԡ����з��μǡ���С�˹�����ս��Դ�ڳԼ���ʱ�Ǿ����Ӵ�ͷ(Big-Endian)�ÿ����Ǵ�Сͷ(Little-Endian)�ÿ����ɴ����������������ң�����һ���ʵ�����������һ��������λ��

��������һ�㽫endian�����ɡ��ֽ��򡱣���big endian��little endian��������β���͡�Сβ����

1���ַ����롢���룬˳�����ܺ��ֱ���

�����ַ��������������ܱ�������������������ʹ�õ�ȱʡ���뷽ʽ���Ǽ����������롣���ڵļ�����ʹ��7λ��ASCII���룬Ϊ�˴������֣�����Ա���������ڼ������ĵ�GB2312�����ڷ������ĵ�big5��

����GB2312(1980��)һ����¼��7445���ַ�������6763�����ֺ�682���������š������������뷶Χ���ֽڴ�B0-F7�����ֽڴ�A1-FE��ռ�õ���λ��72*94=6768��������5����λ��D7FA-D7FE��

����GB2312֧�ֵĺ���̫�١�1995���ĺ�����չ�淶GBK1.0��¼��21886�����ţ�����Ϊ��������ͼ�η�����������������21003���ַ���2000����GB18030��ȡ��GBK1.0����ʽ���ұ�׼���ñ�׼��¼��27484�����֣�ͬʱ����¼�˲��ġ����ġ�ά�����ĵ���Ҫ�������������֡����ڵ�PCƽ̨����֧��GB18030����Ƕ��ʽ��Ʒ�ݲ���Ҫ���������ֻ���MP3һ��ֻ֧��GB2312��

������ASCII��GB2312��GBK��GB18030����Щ���뷽�������¼��ݵģ���ͬһ���ַ�����Щ��������������ͬ�ı��룬�����ı�׼֧�ָ������ַ�������Щ�����У�Ӣ�ĺ����Ŀ���ͳһ�ش������������ı����ķ����Ǹ��ֽڵ�����λ��Ϊ0�����ճ���Ա�ijƺ���GB2312��GBK��GB18030������˫�ֽ��ַ��� (DBCS)��

�����е�����Windows��ȱʡ���뻹��GBK������ͨ��GB18030������������GB18030������GB18030����GBK���ӵ��ַ�����ͨ���Ǻ����õ��ģ�ͨ�����ǻ�����GBKָ������Windows���롣

�������ﻹ��һЩϸ�ڣ�

����GB2312��ԭ�Ļ�����λ�룬����λ�뵽���룬��Ҫ�ڸ��ֽں͵��ֽ��Ϸֱ�����A0��

������DBCS�У�GB�����Ĵ洢��ʽʼ����big endian������λ��ǰ��

����GB2312�������ֽڵ�����λ����1��������������������λֻ��128*128=16384��������GBK��GB18030�ĵ��ֽ�����λ�����ܲ���1�������ⲻӰ��DBCS�ַ����Ľ������ڶ�ȡDBCS�ַ���ʱ��ֻҪ������λΪ1���ֽڣ��Ϳ��Խ��������ֽ���Ϊһ��˫�ֽڱ��룬�����ùܵ��ֽڵĸ�λ��ʲô��

2��Unicode��UCS��UTF

����ǰ���ᵽ��ASCII��GB2312��GBK��GB18030�ı��뷽�������¼��ݵġ���Unicodeֻ��ASCII���ݣ���׼ȷ��˵������ISO-8859-1���ݣ�����GB�벻���ݡ����硰�����ֵ�Unicode������6C49����GB����BABA��

����UnicodeҲ��һ���ַ����뷽�������������ɹ�����֯���ƣ���������ȫ���������������ֵı��뷽����Unicode��ѧ����"Universal Multiple-Octet Coded Character Set"������ΪUCS��UCS���Կ�����"Unicode Character Set"����д��

��������ά���ٿ�ȫ��(http://zh.wikipedia.org/wiki/)�ļ��أ���ʷ�ϴ���������ͼ��������Unicode����֯�������ʱ�׼����֯��ISO����һ�����������̵�Э�ᣨunicode.org����ISO������ISO 10646��Ŀ��UnicodeЭ�Ὺ����Unicode��Ŀ��

������1991��ǰ����˫������ʶ�����粻��Ҫ���������ݵ��ַ������������ǿ�ʼ�ϲ�˫���Ĺ����ɹ�����Ϊ����һ����һ��������Эͬ��������Unicode2.0��ʼ��Unicode��Ŀ��������ISO 10646-1��ͬ���ֿ������롣

����Ŀǰ������Ŀ�Զ����ڣ��������ع������Եı�׼��UnicodeЭ�����ڵ����°汾��2005����Unicode 4.1.0��ISO�����±�׼��10646-3:2003��

����UCS�涨����ô�ö����ֽڱ�ʾ�������֡�����������Щ���룬����UTF(UCS Transformation Format)�淶�涨�ģ�������UTF�淶����UTF-8��UTF-7��UTF-16��

����IETF��RFC2781��RFC3629��RFC��һ�������������������ֲ�ʧ�Ͻ���������UTF-16��UTF-8�ı��뷽���������ǼDz���IETF��Internet Engineering Task Force����д����IETF����ά����RFC��Internet��һ�й淶�Ļ�����

3��UCS-2��UCS-4��BMP

����UCS�����ָ�ʽ��UCS-2��UCS-4������˼�壬UCS-2�����������ֽڱ��룬UCS-4������4���ֽڣ�ʵ����ֻ����31λ������λ����Ϊ0�����롣������������һЩ�򵥵���ѧ��Ϸ��

����UCS-2��2^16=65536�����UCS-4��2^31=2147483648�����

����UCS-4��������λΪ0�������ֽڷֳ�2^7=128��group��ÿ��group�ٸ��ݴθ��ֽڷ�Ϊ256��plane��ÿ��plane���ݵ�3���ֽڷ�Ϊ256�� (rows)��ÿ�а���256��cells����Ȼͬһ�е�cellsֻ������һ���ֽڲ�ͬ�����඼��ͬ��

����group 0��plane 0������Basic Multilingual Plane, ��BMP������˵UCS-4�У��������ֽ�Ϊ0����λ������BMP��

������UCS-4��BMPȥ��ǰ�����������ֽھ͵õ���UCS-2����UCS-2�������ֽ�ǰ�����������ֽڣ��͵õ���UCS-4��BMP����Ŀǰ��UCS-4�淶�л�û���κ��ַ���������BMP֮�⡣

4��UTF����

����UTF-8������8λΪ��Ԫ��UCS���б��롣��UCS-2��UTF-8�ı��뷽ʽ���£�

UCS-2����(16����)UTF-8 �ֽ���(������)
0000 - 007F0xxxxxxx
0080 - 07FF110xxxxx 10xxxxxx
0800 - FFFF1110xxxx 10xxxxxx 10xxxxxx

�������硰�����ֵ�Unicode������6C49��6C49��0800-FFFF֮�䣬���Կ϶�Ҫ��3�ֽ�ģ���ˣ�1110xxxx 10xxxxxx 10xxxxxx����6C49д�ɶ������ǣ�0110 110001 001001�� ���������������δ���ģ���е�x���õ���11100110 10110001 10001001����E6 B1 89��

�������߿����ü��±�����һ�����ǵı����Ƿ���ȷ��

����UTF-16��16λΪ��Ԫ��UCS���б��롣����С��0x10000��UCS�룬UTF-16�����͵���UCS����Ӧ��16λ�޷������������ڲ�С��0x10000��UCS�룬������һ���㷨����������ʵ��ʹ�õ�UCS2������UCS4��BMP��ȻС��0x10000�����Ծ�Ŀǰ���ԣ�������ΪUTF-16��UCS-2������ͬ����UCS-2ֻ��һ�����뷽����UTF-16ȴҪ����ʵ�ʵĴ��䣬���ԾͲ��ò������ֽ��������⡣

5��UTF���ֽ�����BOM

����UTF-8���ֽ�Ϊ���뵥Ԫ��û���ֽ��������⡣UTF-16�������ֽ�Ϊ���뵥Ԫ���ڽ���һ��UTF-16�ı�ǰ������ҪŪ����ÿ�����뵥Ԫ���ֽ����������յ�һ����������Unicode������594E�����ҡ���Unicode������4E59�����������յ�UTF-16�ֽ�����594E������ô���ǡ��������ǡ��ҡ���

����Unicode�淶���Ƽ��ı����ֽ�˳���ķ�����BOM��BOM���ǡ�Bill Of Material����BOM��������Byte Order Mark��BOM��һ���е�С�������뷨��

������UCS��������һ������"ZERO WIDTH NO-BREAK SPACE"���ַ������ı�����FEFF����FFFE��UCS���Dz����ڵ��ַ������Բ�Ӧ�ó�����ʵ�ʴ����С�UCS�淶���������ڴ����ֽ���ǰ���ȴ����ַ�"ZERO WIDTH NO-BREAK SPACE"��

�������������������յ�FEFF���ͱ��������ֽ�����Big-Endian�ģ������յ�FFFE���ͱ��������ֽ�����Little-Endian�ġ������ַ�"ZERO WIDTH NO-BREAK SPACE"�ֱ�����BOM��

����UTF-8����ҪBOM�������ֽ�˳�򣬵�������BOM���������뷽ʽ���ַ�"ZERO WIDTH NO-BREAK SPACE"��UTF-8������EF BB BF�����߿���������ǰ�����ܵı��뷽����֤һ�£������������������յ���EF BB BF��ͷ���ֽ�������֪������UTF-8�����ˡ�

����Windows����ʹ��BOM�������ı��ļ��ı��뷽ʽ�ġ�

6����һ���IJο�����

����������Ҫ�ο��������� "Short overview of ISO-IEC 10646 and Unicode" (http://www.nada.kth.se/i18n/ucs/unicode-iso10646-oview.html)��

�����һ�������ƪ����ȥ���������ϣ�������Ϊ�ҿ�ʼ�����ʶ��ҵ��˴𰸣����Ծ�û�п���

"Understanding Unicode A general introduction to the Unicode Standard" (http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=IWS-Chapter04a)
"Character set encoding basics Understanding character set encodings and legacy encodings" (http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=IWS-Chapter03)

������д��UTF-8��UCS-2��GBK�໥ת����������������ʹ��Windows API�Ͳ�ʹ��Windows API�İ汾���Ժ���ʱ���Ļ����һ�����һ�·ŵ��ҵĸ�����ҳ��(http://fmddlmyy.home4u.china.com)��

�������������������������ſ�ʼд��ƪ���µģ�ԭ��Ϊһ��������д�á�û�뵽���Ǵ��ǺͲ�֤ϸ�ڻ����˺ܳ�ʱ�䣬��Ȼ������1:30д��9:00��ϣ���ж����ܴ������档

��ע����

������Ѷ������ʱ�� �����²�Ӯ��Ʒ