Terminal > Profiles > Advanced > Text encoding
は、Unicode (UTF-8)
と設定されています。Mac端末で表示されないC++のUnicode
Terminal > Profiles > Advanced > Set locale environment variables on startup
がチェックされます。
Terminal > Profiles > Advanced > Unicode East Asian Ambiguous characters are wide
がチェックされています(これもチェックしてみましたが、両方とも同じ結果が得られました)。
端末プロファイルで選択されているフォントは、中国語の文字と互換性があります。確認しました。
私は、ターミナル自体を通じてlocale
をチェックし、それは次のようになります:
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
- である、それはen_US
を言うだけでなく、UTF8
が言うように、私は、これが問題であるかどうかわからないんだけど私が入力している文字のエンコーディング。このすべてをテストする
は、私は次のコードを使用しました。最初は
char dao [4] = "\u9053";
std::wcout << "Character: " << dao << std::endl;
wchar_t wdao[] = L"道";
std::wcout << "Character 2: " << wdao << std::endl;
を、文字が疑問符として上がったが、今、彼らはまったく表示されません。これらの行をすべてプログラムに入れると、表示されるのはすべてCharacter:
です。2行目には行かず、漢字も表示されず、エラーも表示されません。
私はsetlocale();
を試しましたが、それは役に立ちません。
また、C++コードのソースファイルがUnicode UTF-8
に設定されていることを確認しました。
アイデア?私が紛失しているものはありますか?
UPDATE:
char dao [4] = "道";
std::cout << "Character: " << dao << std::endl;
char dao2 [4] = "\u9053";
std::cout << "Character: " << dao2 << std::endl;
私はそれがwchar_t
の代わりchar[]
で動作するように取得することができませんでした、言った:私はこの方法を介して端末に表示する文字を取得することができます。私はこれが十分に機能していると思いますが、誰かが問題が何であったかをwchar_t
で知っていれば、将来の参照のためにそれを知っていただければ幸いです。
wcoutありがとう、私はwcout' 'とワイド文字を試してみましたそれもうまくいきませんでした。なんらかの理由で、私はワイド文字の中に漢字を入れることができず、「wcout」を通してそれを印刷することができませんでした。それは、文字を単なるものとして扱うことができたからです。文字配列。それがなぜ起こっているのかについてご意見がありましたら、私にお知らせください。中国語の文字とのやりとりはちょっと複雑で、正確に何がうまくいかないのか分かりにくいです。 –