我下载的是最新版本iconv-1.15,代码是有po汉化的,
我使用MSYS2编译成功,但是有中文的地方除了最后两行都不显示。
发现是printf的中文都不显示,fputs的中文就显示,因此就有了解决方案,
在iconv.c中包含一个头文件,主要内容如下:
//写了两个函数,内部用fputs输出
int ly_vfprintf(FILE *s, const char *format, va_list ap) { …… }
void ly_error(int status, int errnum, const char *message, ...) { …… }
//定义替换宏
#define error(status, errnum, ...) ly_error(status, errnum, __VA_ARGS__)
#undef printf
#define printf(...) ly_fprintf(stdout, __VA_ARGS__)
#undef fprintf
#define fprintf(f, ...) ly_fprintf(f, __VA_ARGS__)
#undef vfprintf
#define vfprintf(f, fmt, arg) ly_fprintf(f, fmt, arg)
编译后就可以正常显示中文了。
但不了解其中原理,希望有大神能指导一下,谢谢!