首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

ASCII,UNICODE,UTF-8编程疑惑。该如何解决

2012-05-29 
ASCII,UNICODE,UTF-8编程疑惑。。。。。什么情况下使用ASCII编码方式编程?使用的时候,一般使用char、string等类

ASCII,UNICODE,UTF-8编程疑惑。。。。。
什么情况下使用ASCII编码方式编程?使用的时候,一般使用char、string等类型定义字符串。
什么情况下使用UNICODE编码方式编程?使用的时候,一般使用wchar,wstring等类型定义字符串。
什么情况下使用UTF-8编码方式编程?使用的时候,用什么数据类型定义我的字符串啊?

菜米求助,有这方面经验的帮下小弟解下迷惑啊,谢谢了!!!

[解决办法]
源文件编码只影响程序里的常量字符串,也就是看得见的,比如:

"你好吗", "我是谁" ,这些字符串的编码与源文件编码一致.


其他任何通过文件读入的, 通过网络获得的, 都是其原本的编码, 需要提前获知以便正确使用.
[解决办法]
如果要和其他程序通信,比如网络什么的,那就要和对方协商好,或者依据通用的方式
如果只是自己用,那要看你想支持什么语言,不同的语言有不同的编码,例如ISO 8859-1支持很多西欧字符,ISO 8859-7支持希腊,如果你想支持英法可用ISO 8859-1,想支持英希可用ISO 8859-7,但要支持法文和希腊就不能用一个ISO 8859编码,此时可考虑unicode
unicode是一个集大成者,包含了多种码的字库,utf8,utf16等是unicode三层编码中的一层,字符编号到字节序列的映射,可以选用当前操作系统使用的那一个
[解决办法]
一言以蔽之,需要进行国际化和/或本地化时可考虑UNICODE,两者皆不考虑就用A得了。
[解决办法]
只要有可能要用到超过一种编码,考虑两点:
保证编码符合预期(否则乱码活该);
避免不必要的转换。
[解决办法]
对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。

[解决办法]
这个和你编码的源文件没太多关系哈,主要看你处理的是什么编码方式的字符串。

楼上已经提供了几种常见的编码问题,我说说我遇到过的:

(1)在做POP3客户端一个实验的时候,会发现邮件的数据编码并不一致(这取决于他人写邮件的时候采用的编码方式)
(2)调用库函数,支持哪些编码的处理,windows API有 Unicode和Ansi;再举个例子,GTK库处理的是UTF-8编码,在vs中编写代码是ansi的,那就得将ansi转换成UTF-8,然后交给GTK库处理;
(3)自己编写库,如果需要编码处理也得说明处理何种编码的字符串;

举个例子在windows中的编码处理:

C/C++ code
//可以通过预处理来决定使用 哪个版本的的函数#ifdef UNICODE#define LoadLibrary  LoadLibraryW#else#define LoadLibrary  LoadLibraryA#endif // !UNICODE 

热点排行