JNA文字列コードを正しく変換する

425 ワード

cには原生文字列がありません。WindowsのLPCTSTRは実際にバイト配列ポインタです。JNAはLPCSTR->Stringマッピングを行う時、まずLPCSTRをbyte[]にマッピングしてから、システム属性「jna.encoding」の値によってnew String(byte[],jna.encoding)に戻ります。
「jna.encoding」がnullである場合、JavaはデフォルトのUTF-8で符号化されます。このローカルライブラリが非ユニックであると、文字化けが発生します。
文字化けを避けるには、アプリケーション起動時に一つを追加します。

System.setProperty("jna.encoding", stringEncoding);
はい、簡体字中国語Windowsの下ではstingEngcodingはGBKです。