2016-05-06 6 views
0

この使用例に特有のカスタム文字エンコーディングで文字列を表現する必要がある特定の使用例があります。などのフォントは、すでにの世話をしているが、私のようなものを入力できるようにしたいと思います:Cでのカスタム文字エンコード

static char *test= "Test string"; 

をし、それがのバイト文字列と同等であることがありますではありません

CE D9 E7 E8 00 E7 E8 E6 DD E2 DB FF 

他の場所で使用されるエンコーディング。文字列がソースに書き込まれたときにこの実行エンコードを使用するようGCCに指示する方法はありますか?

+0

C++では、カスタムの 'constexpr'文字列リテラルサフィックスを使用することができます。 –

+1

C++ではなく、Cを使用しています。 –

+1

スペースをヌル文字として表現しますか?これはうまくいきません。 –

答えて

2

まず、エンコードをサポートする独自のiconvパッケージを構築する必要があります。 Here's how、「新しい文字セットを追加する方法」までスクロールします。

次にgcciconvのカスタムを使用させるには、LD_PRELOADなどを設定します。

次に、-fexec-charset-fwide-exec-charset gccオプションを使用してください。

また、独自のlibcをビルドする必要があるかもしれません。上のオプションを使ってglibcを再コンパイルするだけで、逃げることができるかもしれません。それとも、iconvとglibcが数値ゼロとしてエンコードされていない "ヌル"ターミネーターにどれだけうまく対処できるかによって、 C言語では'\0' == 0が必要ですが、エンコーディングで0がスペースをエンコードするようです。

+0

これは決して前に見ることはありません。特定の 'iconv'を構築するヌルターミネーターの値を再定義することは可能ですか? – LPs

+0

これを私の奇妙なGCCツールキットとどのように統合するかという手がかりはありませんが、これは確かに正しい方向への一歩と思われます。ありがとうございました! –

+1

@LPはわかりません、更新された回答。 –

関連する問題