最近改写一个安装引导程序,把C#版的写成C++的本地代码,以免用户在未安装.net framework时
无法启动安装,但写入配置文件的时候,发现若路径名称是中文的话,就写不进去,
用的是STL,后来查了查,这个问题很普遍,微软官方有解决方法,关键是一句:
confFile.imbue(std::locale("chs"));
#include <fstream> void main() { TCHAR startupPath[MAX_PATH]; TCHAR confPath[MAX_PATH]; TCHAR confFullPath[MAX_PATH]; TCHAR startupFolder[MAX_PATH]; GetModuleFileName(NULL,startupPath,MAX_PATH); GetTempPath(MAX_PATH,confPath); GetCurrentDirectory(MAX_PATH,startupFolder); wsprintf(confFullPath,TEXT("%s%s"),confPath,configFileName);//设置配置文件全路径名 wofstream confFile; confFile.open(confFullPath,ios::out); confFile.imbue(std::locale("chs")); confFile<<startupFolder; confFile.close(); }
解决了中文问题,想了想,若是文件夹名称是日文朝鲜文德文法文意大利文怎么办呢?
纠结,估计到时候就不能直接写成字符串了,
得写成byte到文件中
参考站点:
http://support.microsoft.com/kb/q274012/
您还没有登录,请您登录后再发表评论
CSpreadSheet类的原始版本可能只支持ASCII或MBCS,不兼容Unicode,这可能会导致在处理非英文字符时出现问题,比如中文、日文、韩文等。 为了使CSpreadSheet类能在Unicode环境下工作,开发者可能进行了以下修改: 1...
相较于ASCII编码,Unicode使用两个字节(16位)来表示一个字符,提供了65536个字符空间,足以涵盖世界上所有语言的文字。ASCII编码仅能表示256个字符,对于英文字符来说绰绰有余,但对于中文、阿拉伯文等复杂文字则...
在进行中文字符输出时,可以使用`wofstream`和`wifstream`替换`ofstream`和`ifstream`,以及`wcout`和`wcin`替换`cout`和`cin`。这样可以确保数据在宽字符环境里正确处理。 3. **设置正确的编码** 编译时,确保你...
Unicode是一种国际化的字符编码标准,它能表示世界上几乎所有的文字系统,包括拉丁文、汉字、希腊文、阿拉伯文等。为了在VC6.0中创建Unicode版本的程序,我们需要了解并遵循一系列步骤。 首先,确保你的开发环境...
使用调试工具(如Visual Studio的调试器)查看保存时的文件内容,确认是否正确写入了中文字符。同时,检查错误日志和异常处理,找出可能导致保存失败的具体原因。 综上所述,解决标题和描述中的问题需要关注C++...
例如,在尝试将中文字符写入文件时,可能会出现乱码或其他编码错误。本文通过一个具体的例子,探讨了如何解决中文写入XML文件时的问题。 ### 二、问题分析 #### 1. 编码问题 编码问题是导致中文字符在XML文件中...
当涉及到UTF-8编码时,问题在于C++标准库默认处理的是ASCII编码,这可能导致在读写非ASCII字符(如中文、日文等多字节字符)时出现乱码。为了解决这个问题,你需要确保正确地指定文件的编码格式。 在读取UTF-8编码...
宽字符通常在处理多语言文本时使用,特别是那些需要支持Unicode编码的场景。`wstr.h` 文件可能是这个示例中的头文件,包含了处理宽字符串的相关定义和函数声明。 描述 "Simple w_char manipulation" 表明这个代码...
在本实例中,可能会使用到字符串匹配算法,尤其是当目标是特定的函数名、变量名或特定的Unicode字符时。Unicode是一种广泛使用的字符编码标准,它包含了世界上几乎所有的字符和符号。在源码中,Unicode的使用是为了...
同时,文件流也需要配置为UNICODE编码,这通常涉及到使用`std::wifstream`和`std::wofstream`而不是`std::ifstream`和`std::ofstream`。 总的来说,TIniFile类为C++开发者提供了一种简洁且强大的方式来管理配置文件...
如果文件路径包含中文,确保文件名和路径使用宽字符串`std::wstring`表示,并使用`std::wofstream`打开文件。 2. **设置编码**:为了处理中文字符,我们需要确保文件以UTF-8编码打开。这通常需要第三方库如`...
- **宽字符文件流**:对于非英文字符集,C++提供了宽字符版本的文件流类`wifstream`, `wofstream`, `wfstream`,以及宽字符类型的`wstring`。 #### 七、示例代码 ```cpp #include #include #include int main...
对于宽字符类型`wchar_t`的支持,标准库为每个基本的I/O类提供了对应的宽字符版本,例如`wifstream`、`wofstream`和`wstringstream`。这些宽字符类型的类在相应的头文件中定义,如`fstream`中的宽字符文件流类。 ...
相关推荐
CSpreadSheet类的原始版本可能只支持ASCII或MBCS,不兼容Unicode,这可能会导致在处理非英文字符时出现问题,比如中文、日文、韩文等。 为了使CSpreadSheet类能在Unicode环境下工作,开发者可能进行了以下修改: 1...
相较于ASCII编码,Unicode使用两个字节(16位)来表示一个字符,提供了65536个字符空间,足以涵盖世界上所有语言的文字。ASCII编码仅能表示256个字符,对于英文字符来说绰绰有余,但对于中文、阿拉伯文等复杂文字则...
在进行中文字符输出时,可以使用`wofstream`和`wifstream`替换`ofstream`和`ifstream`,以及`wcout`和`wcin`替换`cout`和`cin`。这样可以确保数据在宽字符环境里正确处理。 3. **设置正确的编码** 编译时,确保你...
Unicode是一种国际化的字符编码标准,它能表示世界上几乎所有的文字系统,包括拉丁文、汉字、希腊文、阿拉伯文等。为了在VC6.0中创建Unicode版本的程序,我们需要了解并遵循一系列步骤。 首先,确保你的开发环境...
使用调试工具(如Visual Studio的调试器)查看保存时的文件内容,确认是否正确写入了中文字符。同时,检查错误日志和异常处理,找出可能导致保存失败的具体原因。 综上所述,解决标题和描述中的问题需要关注C++...
例如,在尝试将中文字符写入文件时,可能会出现乱码或其他编码错误。本文通过一个具体的例子,探讨了如何解决中文写入XML文件时的问题。 ### 二、问题分析 #### 1. 编码问题 编码问题是导致中文字符在XML文件中...
当涉及到UTF-8编码时,问题在于C++标准库默认处理的是ASCII编码,这可能导致在读写非ASCII字符(如中文、日文等多字节字符)时出现乱码。为了解决这个问题,你需要确保正确地指定文件的编码格式。 在读取UTF-8编码...
宽字符通常在处理多语言文本时使用,特别是那些需要支持Unicode编码的场景。`wstr.h` 文件可能是这个示例中的头文件,包含了处理宽字符串的相关定义和函数声明。 描述 "Simple w_char manipulation" 表明这个代码...
在本实例中,可能会使用到字符串匹配算法,尤其是当目标是特定的函数名、变量名或特定的Unicode字符时。Unicode是一种广泛使用的字符编码标准,它包含了世界上几乎所有的字符和符号。在源码中,Unicode的使用是为了...
同时,文件流也需要配置为UNICODE编码,这通常涉及到使用`std::wifstream`和`std::wofstream`而不是`std::ifstream`和`std::ofstream`。 总的来说,TIniFile类为C++开发者提供了一种简洁且强大的方式来管理配置文件...
如果文件路径包含中文,确保文件名和路径使用宽字符串`std::wstring`表示,并使用`std::wofstream`打开文件。 2. **设置编码**:为了处理中文字符,我们需要确保文件以UTF-8编码打开。这通常需要第三方库如`...
- **宽字符文件流**:对于非英文字符集,C++提供了宽字符版本的文件流类`wifstream`, `wofstream`, `wfstream`,以及宽字符类型的`wstring`。 #### 七、示例代码 ```cpp #include #include #include int main...
对于宽字符类型`wchar_t`的支持,标准库为每个基本的I/O类提供了对应的宽字符版本,例如`wifstream`、`wofstream`和`wstringstream`。这些宽字符类型的类在相应的头文件中定义,如`fstream`中的宽字符文件流类。 ...