fopen函数处理中文路径和内容乱码问题
1. 中文路径问题
问题原因
-
Windows API使用Unicode字符集,而传统的
fopen使用ANSI字符集 -
路径中的中文字符在ANSI和Unicode之间转换时可能出现问题
解决方案:
设置区域设置
#include <stdio.h>
#include <locale.h>
int main() {
// 设置区域设置为中文
setlocale(LC_ALL, "Chinese_China.936"); // 简体中文
// 或者 setlocale(LC_ALL, "zh_CN.UTF-8"); // UTF-8
FILE* file = fopen("中文路径\\文件.txt", "r");
if (file != NULL) {
// 文件操作...
fclose(file);
}
return 0;
}
