1. ホーム
  2. c

[解決済み] C言語プログラミング:ユニコードに対応したプログラミングをするには?

2023-06-29 12:27:22

質問

厳密なUnicodeプログラミングを行うには、どのような前提条件が必要ですか?

これは、私のコードでは char を扱うことができる関数を使用する必要があるということです。 wint_twchar_t ?

また、このシナリオでマルチバイト文字列が果たす役割は何でしょうか?

どのように解決するのですか?

これは、厳密なユニコード・プログラミングについてではなく、いくつかの実践的な経験であることに注意してください。

私の会社で行ったことは、IBM の ICU ライブラリの周りにラッパー ライブラリを作成することでした。このラッパー ライブラリは UTF-8 インターフェイスを持ち、ICU を呼び出す必要があるときに UTF-16 に変換します。私たちの場合、パフォーマンスのヒットはあまり気にしませんでした。パフォーマンスが問題になる場合は、(独自のデータ型を使って)UTF-16のインターフェイスも提供しました。

アプリケーションはほぼそのまま(charを使用)できますが、場合によっては、ある問題に注意する必要があります。たとえば、strncpy() の代わりに、UTF-8 シーケンスの切断を回避するラッパーを使用します。我々の場合はこれで十分ですが、文字を結合する際のチェックなども考えられます。また、コードポイント数、書記素数などをカウントするラッパーも用意しています。

他のシステムと連携する場合、カスタム文字合成を行う必要があることがあるので、(アプリケーションによっては)ある程度の柔軟性が必要かもしれません。

wchar_tは使いません。ICUを使用することで、移植性における予期せぬ問題を回避することができます(もちろん、他の予期せぬ問題ではありません :-)。