c_cpp 将utf8文件输出到控制台
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 将utf8文件输出到控制台相关的知识,希望对你有一定的参考价值。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#include <string.h>
// https://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt
int wmain(int argc, const wchar_t* argv[])
{
int mode = _O_U8TEXT;
const wchar_t* filename = NULL;
for (int arg = 1; arg < argc; ++arg)
{
if (_wcsicmp(argv[arg], L"/U") == 0)
mode = _O_U16TEXT;
else
filename = argv[arg];
}
if (filename == NULL)
{
wprintf(L"Usage: ConUtf8 [/U] <filename>\n");
wprintf(L" /U - output in UTF16\n");
return 1;
}
_setmode(_fileno(stdout), mode);
FILE* f = NULL;
if (_wcsicmp(filename, L"-") == 0)
{
f = stdin;
_setmode(_fileno(stdin), _O_U8TEXT);
}
else
{
errno_t e = _wfopen_s(&f, filename, L"rt+, ccs=utf-8");
if (e != 0)
{
fwprintf(stderr, L"Error opening file \"%s\": %s\n", filename, _wcserror(e));
return 1;
}
}
while (1)
{
unsigned short cin = fgetwc(f);
if (cin == WEOF)
{
if (feof(f))
break;
else
fputwc(L'?', stdout);
}
else
fputwc(cin, stdout);
}
if (f != stdin)
fclose(f);
return 0;
}
以上是关于c_cpp 将utf8文件输出到控制台的主要内容,如果未能解决你的问题,请参考以下文章
关于乱码
Node.js系列文章:利用console输出日志文件
java控制台中文输出乱码,已经注意文件格式和控制台格式了?
c_cpp 输出像素化的圆圈到控制台。对图形或Minecraft有用。
c_cpp 确定控制台会话是否是交互式的,即输入来自keybaod并输出到屏幕
批量更改文件编码格式 utf8到gb2312