Scintillaは本当にUnicodeをサポートしていますか?もしそうなら、なぜ(にキャストされた)値をSCI_GETCHARAT
返すのですか?char
LRESULT
2 に答える
コードページSC_CP_UTF8(65001)は、ScintillaをUnicodeモードに設定し、ドキュメントはUTF-8で表現された文字のシーケンスとして扱われます。テキストは、OSによって描画される前に、プラットフォームの通常のUnicodeエンコーディングに変換されるため、ヘブライ語、アラビア語、キリル文字、および漢字を表示できます。
取得したバイトをSCI_GETCHARAT(pos)で調べる必要があり、その上位ビットによっては、Unicodeコードポイントを取得するためにSCI_GETCHARAT(pos + 1)以降を読み取る場合があります。(ここを参照してください。)
編集:
これを行うC++コードについては、以下を参照してください(検索SciMoz::GetWCharAt
)。
http://vacuproj.googlecode.com/svn/trunk/npscimoz/npscimoz/oldsrc/trunk.nsSciMoz.cxx
私はずっと前のことですが、よく覚えていれば、ScintillaはネイティブのUnicodeアプリケーションではありません。それでも、Unicodeをサポートしています。
まず、関数名はSCI_GETBYTEAT
、UTF-8内部バッファーからバイトを返すためです。
また、アプリケーションはkeybaordをUnicodeでサポートしているため、Unicodeをサポートしています:)