0

私は、SDL_ttf を使用してテキストを描画する、OS に依存しないファイル マネージャーで作業しています。Windows ではすべて問題なく動作しますが、Linux ではファイル名を UTF8 でエンコードできるため、SDL_ttf の UTF8 関数を使用する必要があります。

これはうまくいきますが、"Ää" のような独自の C 文字列 (ファイル名ではない) があると、正しく表示されません。文字列を UTF8 としてエンコードするよう gcc に指示する方法はありますか?

4

3 に答える 3

4

UTF-8 文字列リテラルについては、C コンパイラから特別なものは必要ありません。使用する API での適切なサポートは別の問題ですが、それはカバーされているようです。

ファイルを編集または保存するときに非 ASCII 文字が他のエンコーディングに変換されないように、ソース ファイルが実際に UTF-8 で保存されていることを確認する必要があり ます

コンパイラは、8 ビット文字と構文的に重要な文字の通常の ASCII 値を想定している限り、特定の UTF-8 サポートを必要としません。言い換えれば、それはほぼ確実に問題ではありません。

于 2011-09-29T03:40:00.580 に答える
1

gccは、デフォルトでソースコードと文字列リテラルをUTF-8として解釈する必要があります。-fexec-charsetを試してください

参照:http://gcc.gnu.org/onlinedocs/gcc-4.0.1/cpp/Implementation_002ddefined-behavior.html#Implementation_002ddefined-behavior

于 2011-09-29T00:37:14.687 に答える
1

Cには、ある種のUnicode文字列リテラル構文が必要です。「UnicodeプログラミングC」をグーグルで検索すると、始めることができます。良さそうな2つのチュートリアルは、developerworksのチュートリアルとcprogramming.comのチュートリアルです。

特定のケースの一般的なアプローチは、幅の広い文字列リテラルを使用しL"Ää"、それを。を使用してUTF-8に変換することwcstrtombs()です。

于 2011-09-29T00:37:45.047 に答える