cygwinは文字の代わりに長方形を表示します

cygwinは文字の代わりに長方形を表示します

Cygwinにはいくつかの問題があります。

cygwinでmakeユーティリティを使用すると、テキストの代わりに長方形が印刷されます。また、テキストが英語でない場合(たとえば、ポーランド語やロシア語など)、文字の代わりに長方形が表示されます。ただし、シンボルを印刷すると表示されます。私は mintty と XTerm を使いますが、 mintty が良いです。

localeXtermの出力:

$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_ALL=

しかし、問題は、私のWindows XPが英語になっていますが、アメリカにはなく、ロシア語の時間と日付の設定があるということです。それは問題でしょうか?

他の言語のテキストを正しく見たいのですが、方法はありませんか?

minttyとxtermも少し異なる動作をします。私はポーランド語のテキストファイルを持っています。catminttyはテキストに長方形を提供しませんが、catxtermはいくつかの文字を含む長方形を提供します。

minttyでは、makeの出力は次のようになります。

$ make
make: ▒▒▒▒ `default' ▒▒ ▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒.

このように:

$ make
make: �� `default' � ���� ����� ���.

xtermで。

いくつかの言語で問題を解決する方法を見つけました。https://stackoverflow.com/questions/13094248/how-do-i-get-accented-letters-to-actually-work-on-bash そこに書かれているようにminttyオプションを設定し、ISO-8859-2文字セットを指定すると、ポーランド語のテキストがよく見えます。わかりません。テキストをutf-8形式で保存しますが、テキストがANSI形式のように文字セットを設定する必要があるのはなぜですか?

文字セットをCP1251に設定すると、make結果のみが表示されます(ロシア語になっていますが、理由はわかりません)。

ベストアンサー1

注:私はOPに彼の質問を出力に更新するように依頼しました。locale

ロケールの問題があるようです。を使用して現在のロケールを確認できますlocale。端末が認識できない形式で出力されるようにするLC_*設定がある可能性が高いです。makeUTF8文字セットを選択し、UTF8文字列を解析またはサポートするように設定されていない端末がある場合は、この内容を表示できます。同様に、ロケールがutf-8ではなく、端末がutf-8を表示するように設定されている場合、同様の問題が表示されます。 Minittyは以下をサポートします。

$ perl -le 'binmode(STDOUT, ":utf8"); print "\x{0e44}\x{0e45}\x{0e46}";'
ไๅๆ

LC_ALL=C makeまたはを試して、export LC_ALL=C && makeブロック出力が消えていることを確認してください。

utf8とANSIの違いに関する質問に答えるために、utf8にはより大きな文字セットがあります。この問題を解決するために、utf8は2ビットを使用して拡張文字シーケンスを記述します。ISO-8859-2などの文字セットは1ビットのみを使用します。しかし、このトリックがない場合品目明細ファイルとして保存すると(常にサポートされていない)、使用するプログラムは違いを知らないため、localeこれらの文字列を解釈する方法の設定に依存します。これらの問題を複雑にすることは、すべてのアプリケーションがそうではないということです。サポートするutf8。エンコード、Unicode、utf8 に関する詳細については、次をご覧ください。ウィキペディア。ロシア語のテキストをUnicodeにエンコードする必要がある場合は、次のようにUnicodeシーケンスを見つけることができます。ウィキペディア返品。

Makefileで拡張文字を使用している場合は、その文字が実行したいエンコードと一致することを確認する必要があります。

おすすめ記事