2017-11-19 14 views
0

ラザロのデフォルトのRTLコードページを取得Wiki状態ラザロ

ラザロ(実際にはそのLazUtilsパッケージ)というAPI を利用し、UTF-8(CP_UTF8)にそれを変更します。これは、Windowsユーザーは、現在、当社のクロスプラットフォームおよびクロスコンパイラのコードではRTL

で UTF-8文字列を使用して、我々はこの特定の状況を検出したいと思いも意味します。 GetACP()Windows API関数は "1252"を返し、GetDefaultTextEncoding()もLazarusで機能します。しかし、テキスト(具体的には、FindFirst()関数によって返されるファイル名)には、UTF8でエンコードされたファイル名の文字列が含まれており、文字列(変数)のコードページも65001です。

RTLがデフォルトでUTF8文字列で動作することは、どのようにわかりますか?私はLazarusのソースコードからこれを理解しようと数時間を費やしましたが、おそらく私は何かを見逃しています...

多くのシナリオで、特定の文字列のコードページを調べる必要があります。 LazarusのUTF8である既定のRTLコードページを見つける方法に興味がありますが、LazarusのないFPC/WindowsのWindows定義のコードページもあります。

答えて

0

単一のコードページ変数または関数がないことが分かります。ファイルシステムAPI呼び出しの結果は、DefaultRTLFileSystemCodePage変数で定義されたコードページに変換されます。唯一の問題は、この変数がソースコードに存在し、システム単位であるはずですが、コンパイラーはそれを認識しないことです。

+0

彼らはそこにいるはずです。しかし、FPC 3.0.x + –

+0

@MarcovandeVoortはい、私もそう思っていましたが、何らかの理由でコンパイラがそれらを解決しません。 FPC 3.0.2は私が開発システム上に持っている唯一のバージョンです(もし3.0+でないなら、最初はデフォルトとしてUTF8を取得しません)。 –

+0

ここでは、 "begin writeln(defaultsystemcodepage)"; endでFPC 3.0.2/win32をインストールした状態で動作します。プログラム –

関連する問題