2012年9月17日月曜日

LINUXに移植するけど文字列をどうするかっていう件。


うぅーん。考えどころです。
LINUXに組版を移植するわけですが(たぶん)、
文字列、どうしますかねー。
問題は、、、
・せっかくだから、ちゃんとサロゲートペアしなくちゃいけない
・Windows版とソースは共通(プロセス管理とかでifdef多発は仕方ないにしても)

ってことなんですが、なにしろ、Windows版を作るときに、基本をwchar_tにしちゃったもんだから、、
そのころは、wchar_tって、、かならず2バイトだと思ってたもんだから。。。

だからといって、wchar_tを4バイト固定にして、UTF-32にするって方法もあるけど、
Windowsでの扱いがめんどいし。。。。
ってことで、
・基本はUTF-16でやる
・でも、ポイントポイントではUTF-32でやるj場合もある
ってことで、とりあえずは設計開始。

よって、文字列関係の関数は、基本、手作りにします。


1 件のコメント:

  1. そうなんですよね。
    LinuxとかMacだとwchar_tが4byteなんですよね。
    →mingwはUTF-16なのでGCC系だから4byteというわけじゃないんですよね。
    かといってUTF-8でやるのもWindowsで面倒だし。
    そもそもソースをUTF-8にしてもソースコード中の文字リテラルはSJISになっちゃうし。
    C++11のUnicodeの各種リテラルもどのコンパイラもまともにサポートしてくれないしで、結局wchar_tで文字リテラルはL""つけて、ソースコードはBOM付きUTF-8で作るところで落ち着くような気がします。

    返信削除