学习了字符编码以后,我们来学学怎么用C++读写unicode文本。
先熟悉一下字符类型,char, wchar_t, TCHAR,最熟悉的char是单字节字符,适用于ANSI编码;wchar_t是双字节的宽字符类型,适用于unicode编码;TCHAR是一个宏,在ANSI坏境下定义为char,unicode坏境下定义为wchar_t。
怎么来表示字符串?对,字符数组,要知道在C++语言里面,其实没有数组的数据结构,所谓数组,都是由指针+长度来表示。字符型指针const char *, const wchar_t *, const TCHAR *可以用来在不同的环境下表示字符串。再说相关的几个宏,LPSTR: long point string, 相当于char *; LPCSTR: long point const string, 相当于 const char *; LPCWSTR: long point const wide string, 相当于 const wchar_t *; LPCTSTR: 类似的,相当于 const TCHAR *; 这些都不要死记硬背,记着大写字母的意思即可猜出其含义。
2008年8月25日
2008年8月20日
2008年8月8日
2008年8月1日
【转】unicode、utf-8、ansi的故事
快下班时,爱问问题的小朋友Nico又问了一个问题:"sqlserver里面有char和nchar,那个n据说是指unicode的数据,这个是什么意思。"并不是所有简单的问题都很容易回答,就像这个问题一样。于是我答应专门写一篇BLOG来从头讲讲编码的故事。那么就让我们找个草堆坐下,先抽口烟,看看夜晚天空上的银河,然后想一想要从哪里开始讲起。嗯,也许这样开始比较好……
很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为"字节"。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为"计算机"。
很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为"字节"。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为"计算机"。
订阅:
博文 (Atom)
