Chinaunix首页 | 论坛 | 博客
  • 博客访问: 136617
  • 博文数量: 75
  • 博客积分: 3483
  • 博客等级: 中校
  • 技术积分: 820
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-07 08:31
文章分类

全部博文(75)

文章存档

2011年(53)

2010年(22)

我的朋友

分类: C/C++

2010-12-21 21:51:04

From .
Just for fun..
 
ASCII
只支持英文..
 
ANSI编码 char[]
(本地化) GB2312..
 
ANSI在不同的系统 下面有不同的含义, 使用一个字节或多个字节来表示,那么我们称这种字符串为 ANSI 字符串或者多字节字符串
 
为使计算机支持更多语言,通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符。比如:汉字 '中' 在中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。

不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。

不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。
 
-------------------------------------------
 
UNICODE wchar_t[]
(国际化) UTF-8, UTF-7, UTF-16, UnicodeLittle, UnicodeBig
 
为了使国际间信息交流更加方便,国际组织制定了 UNICODE 字符集,为各种语言中的每一个字符设定了统一并且唯一的数字编号,以满足跨语言、跨平台进行文本转换、处理的要求。
 
UNICODE 各种语言中的每一个字符设定了统一并且唯一的数字编号,目前计算机一般使用 2 个字节(16 位)来存放一个序号(DBCS),因此,这种方式存放的字符也被称作宽字节字符,如果“字符”是以在 UNICODE 中的序号存在的,那么我们称这种字符串为 UNICODE 字符串或者宽字节字符串
 
 

// 运行时设定当前 ANSI 编码,VC 格式

setlocale(LC_ALL, ".936");

// GCC 中格式

setlocale(LC_ALL, "zh_CN.GBK");

// Visual C++ 中使用小写 %s,按照 setlocale 指定编码输出到文件

// GCC 中使用大写 %S

fwprintf(fp, L"%s\n", wsz);

// 把 UNICODE 字符串按照 setlocale 指定的编码转换成字节

wcstombs(sz, wsz, 20);
// 把字节串按照 setlocale 指定的编码转换成 UNICODE 字符串

mbstowcs(wsz, sz, 20);


阅读(971) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~