嘗試將日語段落打印到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程序的語言和區域設置更改爲日語,或者谷歌如何將控制檯字體更改爲支持日語的字體。 –