尝试将日语段落打印到Windows控制台时,出现了几个问号。在查看十六进制代码后,我发现它们都被称为“katakana middle dot”。所有其他角色除了这一个单独显示外,通常都会显示。经过几次谷歌搜索之后,我发现this post说这个字符是一个unicode,而Windows可能不支持它。任何想法解决这个问题或请告诉我,这是不可能在Windows上。在Windows控制台中显示片假名中间点
这里是我的相关代码:
CString file_path;
// ... somehow read the string ...
FILE *fStream;
errno_t e = _tfopen_s(&fStream, file_path, _T("rt,ccs=UTF-8"));
if (e != 0)
{
cout << "Read failed" << endl;
return;
}
else
{
CStdioFile f(fStream);
CString buffer;
while (f.ReadString(buffer))
{
CString str(buffer);
// All other characters are fine except for 30fb
cout << W2A(str) << endl;
}
f.Close();
}
我已经试过T2A
,wcout
和printf
但他们没有工作。
谢谢!
您是否获得了输出在Windows控制台窗口?您运行的是Windows的本地化版本,因为控制台具有不同的字体支持和编码默认值。美国Windows默认情况下不会在控制台中打印日语,但日语Windows会。 'chcp'命令的结果是什么?另外一个完整的工作示例将会有所帮助。请参阅http://stackoverflow.com/help/mcve。 –
@MarkTolonen是的,我正在使用Windows控制台。我的windows是中文版的,'chcp'的输出是65001(因为我手动设置了它)。我已经更新了一些问题,使其更加清晰。 – zzy
因此,您的中文版本使用不支持该特定字符的控制台字体。如果您将段落写入UTF-8编码文件并使用记事本或记事本++等GUI工具读取它们,他们可能会使用可显示它的字体。另一种选择是将非Unicode程序的语言和区域设置更改为日语,或者谷歌如何将控制台字体更改为支持日语的字体。 –