2016-07-12 10 views
1

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で知っていれば、将来の参照のためにそれを知っていただければ幸いです。

答えて

0

狭い文字列をwostout(wcoutなど)に出力する演算子はありません。< <あなたが最初のケースでやっていることだ

、あなたが

char dao [4] = "\u9053"; 

を宣言し、それははstdに出力してみてください::

+0

wcoutありがとう、私はwcout' 'とワイド文字を試してみましたそれもうまくいきませんでした。なんらかの理由で、私はワイド文字の中に漢字を入れることができず、「wcout」を通してそれを印刷することができませんでした。それは、文字を単なるものとして扱うことができたからです。文字配列。それがなぜ起こっているのかについてご意見がありましたら、私にお知らせください。中国語の文字とのやりとりはちょっと複雑で、正確に何がうまくいかないのか分かりにくいです。 –

関連する問題