字符,字节和编码(4)

来源:我想网 时间:2009-12-09 15:59:00 

2. 字符与编码在程序中的实现

2.1 程序中的字符与字节

在 C++ 和 Java 中,用来代表“字符”和“字节”的数据类型,以及进行编码的方法:

类型或操作C++Java
字符wchar_tchar
字节charbyte
ANSI 字符串char[]byte[]
UNICODE 字符串wchar_t[]String
字节串→字符串mbstowcs(), MultiByteToWideChar()string = new String(bytes, “encoding”)
字符串→字节串wcstombs(), WideCharToMultiByte()bytes = string.getBytes(”encoding”)

以上需要注意几点:

  1. Java 中的 char 代表一个“UNICODE 字符(宽字节字符)”,而 C++ 中的 char 代表一个字节。

  2. MultiByteToWideChar() 和 WideCharToMultiByte() 是 Windows API 函数。

2.2 C++ 中相关实现方法

声明一段字符串常量:

char sz[] = ;



wchar_t wsz[] = L;

UNICODE 字符串的 I/O 操作,字符与字节的转换操作:

setlocale(LC_ALL, );



setlocale(LC_ALL, );

// GCC 中使用大写 %S
fwprintf(fp, L, wsz);


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

在 Visual C++ 中,UNICODE 字符串常量有更简单的表示方法。如果源程序的编码与当前默认 ANSI 编码不符,则需要使用 #pragma setlocale,告诉编译器源程序使用的编码:

// 则需要此行,编译时用来指明当前源程序使用的编码#pragma setlocale()



wchar_t wsz[] = L;

以上需要注意 #pragma setlocale 与 setlocale(LC_ALL, “”) 的作用是不同的,#pragma setlocale 在编译时起作用,setlocale() 在运行时起作用。

标签:字符,编码,乱码,字节
0
投稿

猜你喜欢

  • 高效地获取XMLhttp对象

    2010-01-19 13:49:00
  • asp 数据库连接函数代码

    2011-04-04 11:08:00
  • js加密页面代码生成器

    2007-10-12 13:40:00
  • 主流浏览器性能比较

    2009-10-19 14:34:00
  • 动易CMS:九个常见的错误原因分析及解决方法(ZT)

    2008-07-01 12:40:00
  • FCKeditor编辑器实战技巧

    2007-10-08 21:13:00
  • ASP中RegExp对象正则表达式语法及相关例子

    2007-08-12 17:46:00
  • javascript 跨浏览器的事件系统

    2010-07-28 19:34:00
  • asp 使用正则表达式替换word中的标签,转为纯文本

    2011-02-28 10:49:00
  • JavaScript基础知识篇-你真的了解JavaScript吗?

    2009-09-17 13:00:00
  • 20个Javascript手风琴折叠菜单

    2009-10-12 12:09:00
  • asp如何刪除客户端的Cookies?

    2010-05-18 18:25:00
  • SQLServer中数据库文件的存放方式,文件和文件组

    2012-01-05 18:56:33
  • 使用CSS选择器创建个性化链接样式

    2009-06-02 13:07:00
  • MySQL数据库中设列的默认值为Now()的介绍

    2009-03-06 17:40:00
  • ORACLE 正则解决初使化数据格式不一致

    2009-05-24 19:44:00
  • 数据库安全应用 使用MySQL的23个注意事项

    2009-05-13 10:27:00
  • [多图]新:60个国外创意404页面设计

    2008-12-05 12:00:00
  • MySQL数据库中CHAR与VARCHAR之争

    2011-05-05 16:33:00
  • overflow的另类用法

    2008-07-02 12:29:00
  • asp之家 网络编程 m.aspxhome.com