解决资源字符串乱码问题
来源:互联网 发布:c语言中scanf什么意思 编辑:程序博客网 时间:2024/05/16 06:51
多语种资源的转换
语言资源转换问题
不同国家的人使用着不同语言的操作系统,在Microsoft Windows 下,语言用代码页来识别,不同种类语言则用不同代码页来表示,如“简体中文”用代码页936表示,而"美国英语“则用代码页1252来表示。
在用Visual C++开发应用程序时,与语种相关信息一般存储在资源文件(*.RC)中。因此,要编制不同语种的应用程序,实质上是要求编写出不同育种的资源文件。在编程时,我们可将不同语种的资源文渐编译成相应的动态连接库。这样,在实际使用时,可根据操作系统所使用代码页异同,选用相应语种的资源文件编译而成的动态连接库,即可使应用程序正常运行。这就是所谓的多国语言编程问题。
如何进行资源转换
下面以将资源文件从代码页936(见体中文)转换到代码页1252(美国英语)为例进行说明。即已有了一代码页为936的资源文件,在资源内容不变的情况下,如何将其转换为代码页为1252的资源文件。
容易想到的但会带来灾难性后果的方法是,直接修改资源的属性。这种方法时,将Microsoft Visual C++的Workspace 窗口切换到Resource View,选中某项资源,单击右健,从弹处菜单中选择“Properties”命令,在弹处对话框中,修改Language项的值。但是,经过次中修改,再打开资源,会发现资源里的内容变成了一堆不可读的乱码。
正确的方法是:以某文件编辑器打开资源文件,在其中查找"Language",找到后可看到入下所示:
//Chinese (P.R.C) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
#endif //_WIN32
这段代码表示当前使用的代码页为936,所代表的语种为简体中文,将以下代码用如下代码替换:
//English (U.S) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH,SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
- 解决资源字符串乱码问题
- 字符串乱码问题的解决
- 解决字符串乱码的问题
- Mysql 字符串编码,解决各种乱码问题
- 解决字符串GET方式提交乱码问题
- php截取中文字符串解决乱码问题
- 解决 @ResponseBody返回字符串乱码问题
- 解决网络请求json字符串乱码问题
- PHP解决截取字符串乱码问题
- Python 2.7:字符串乱码问题的解决
- php截取字符串,解决乱码问题与html标签问题
- smarty模板截取字符串乱码问题完美解决```````
- 解决android 显示中文字符串乱码的问题
- 【PHP】解决 php 截取字符串中文乱码问题
- 解决Spring MVC @ResponseBody返回中文字符串乱码问题
- 解决Spring MVC @ResponseBody返回中文字符串乱码问题
- 解决Spring MVC3.2 @ResponseBody返回中文字符串乱码问题
- 字符串转码解决乱码问题(不是根本解决方法)
- 一个低学历者的辛酸程序路
- 矛盾
- wince驱动开发的偷懒方法
- Kconfig学习(转载)
- ps制作256色(8位)bmp图片的步骤
- 解决资源字符串乱码问题
- Delphi三层的事务处理方法
- SHFileOperation删除和拷贝文件(夹)
- GTK vs MFC
- C#实现所有经典排序算法
- Head First C# 中文版 第九章 读写文件 page421
- Windows 7硬件需求出炉 较Vista略高
- Runtime exec()调用shell脚本
- 周总理经典语录