私は、SDL_ttf を使用してテキストを描画する、OS に依存しないファイル マネージャーで作業しています。Windows ではすべて問題なく動作しますが、Linux ではファイル名を UTF8 でエンコードできるため、SDL_ttf の UTF8 関数を使用する必要があります。
これはうまくいきますが、"Ää" のような独自の C 文字列 (ファイル名ではない) があると、正しく表示されません。文字列を UTF8 としてエンコードするよう gcc に指示する方法はありますか?
UTF-8 文字列リテラルについては、C コンパイラから特別なものは必要ありません。使用する API での適切なサポートは別の問題ですが、それはカバーされているようです。
ファイルを編集または保存するときに非 ASCII 文字が他のエンコーディングに変換されないように、ソース ファイルが実際に UTF-8 で保存されていることを確認する必要があり ます。
コンパイラは、8 ビット文字と構文的に重要な文字の通常の ASCII 値を想定している限り、特定の UTF-8 サポートを必要としません。言い換えれば、それはほぼ確実に問題ではありません。
gccは、デフォルトでソースコードと文字列リテラルをUTF-8として解釈する必要があります。-fexec-charsetを試してください
Cには、ある種のUnicode文字列リテラル構文が必要です。「UnicodeプログラミングC」をグーグルで検索すると、始めることができます。良さそうな2つのチュートリアルは、developerworksのチュートリアルとcprogramming.comのチュートリアルです。
特定のケースの一般的なアプローチは、幅の広い文字列リテラルを使用しL"Ää"
、それを。を使用してUTF-8に変換することwcstrtombs()
です。