マクロの文字コードについて 他R.F.D. - 2008/10/16(木) 14:41 No.1539
|
こんにちは。 マクロの挙動について確認させてください。手元のバージョンは、Win版2.30です。
【1】lmfファイルの文字コード lmfファイルの先頭にエンコードを示すフラグが追記されましたが、 1 [\t] Encoding=UTF-8 に完全一致する場合のみUTF-8と認識され、 それ以外はShift_JISということになるのでしょうか。
また、Shift_JISベースのlmfファイルを読み込んだとき、 自動的にUTF-8にコンバートしない方法はあるのでしょうか? (ファイルの属性、パーミッションを弄れば行けると思いますが)
【2】マクロDLLの引数/戻り値の文字コード *.lmfがUTF-8の場合、 DllStringへの引数はUTF-8からShift_JISに変換してから渡され、 戻り値はShift_JISで受け取ったものをUTF-8に変換されますよね?
せっかくLimeChatがUTF-8なんだから、 DLL内でもUTF-8で処理したいのですが、これは可能でしょうか?
【3】マクロDLLの関数名 バージョン2.16の時の更新内容に >マクロから dll を呼び出す時に関数が見つからない場合、 >頭にアンダーバーがついた名前で関数を探すようにした。 とありますが、これは特定の開発環境(たぶんgcc)への対策でしょうか?
|
Psychs - 2008/10/17(金) 17:16 No.1541
|
> 【1】lmfファイルの文字コード >lmfファイルの先頭にエンコードを示すフラグが追記されましたが、 > 1 [\t] Encoding=UTF-8 >に完全一致する場合のみUTF-8と認識され、 >それ以外はShift_JISということになるのでしょうか。
はい。その通りの仕様です。
>また、Shift_JISベースのlmfファイルを読み込んだとき、 >自動的にUTF-8にコンバートしない方法はあるのでしょうか? >(ファイルの属性、パーミッションを弄れば行けると思いますが)
いまのところ用意していません。 ファイルの属性で read only にしてしまうというのは一つの手段だと思います。
>【2】マクロDLLの引数/戻り値の文字コード >*.lmfがUTF-8の場合、 >DllStringへの引数はUTF-8からShift_JISに変換してから渡され、 >戻り値はShift_JISで受け取ったものをUTF-8に変換されますよね? >せっかくLimeChatがUTF-8なんだから、 >DLL内でもUTF-8で処理したいのですが、これは可能でしょうか?
ANSI版との互換性を維持するためにそのような仕様にしました。 今のところ、DLL に UTF-8 で文字列を渡すことは考えていません。 UTF-8 で扱いたい場合には、スクリプトで処理してくださいという姿勢です。
>【3】マクロDLLの関数名 >バージョン2.16の時の更新内容に > >マクロから dll を呼び出す時に関数が見つからない場合、 > >頭にアンダーバーがついた名前で関数を探すようにした。 >とありますが、これは特定の開発環境(たぶんgcc)への対策でしょうか?
この workaround は、bcc 対策で入れました。 もともと、LimeChat 1 のときにDLL関数の呼び出し規約を stdcall ではなく、 cdecl にしてしまった仕様バグの影響が残っています。
|
R.F.D. - 2008/10/17(金) 19:45 No.1543
|
ありがとうございました。 参考にさせていただきます。
|
|