大規模なコード ベースを持つ既存のアプリケーションに UTF8 のサポートを追加します。このアプリケーションは を使用してboost::format()
おり、ASCII 以外の文字の出力が正しく配置されていません。具体的には、%{width}.{length}
s 指定子を使用する場合、boost::format()
文字をカウントしますが、これは utf8 文字列で「正しいことを行いません」。文字列の長さのコード (おそらく string::size()
) を使用するか、それに似たものに変更することは可能だと思いますutf8len()
... 何かに基づいて?
この場合、UCS2 (または UCS4、UTF-16 など) を使用するように既存のコード ベースを変更することは現実的ではありませんが、boost::format()
必要に応じて変更することは可能です。他の誰かがこの必要性に出くわし、可能な解決策を教えてくれることを願っていました.
注: utf8 でのロケールの使用に関する Web ページをいくつか見つけましたが、そのほとんどは、ストリームでの utf8 および UCS4 との間の変換により適しているように思われました。