Unity アプリの非Windows 環境で、このコード Encoding.GetEncoding(932) を実行すると、そんなコードページのものを知らない、というエラーが発生します。このコードページは Shift-JIS 文字列のための変換で使いたいことがあったので、このあたりを少し調べてみました。
I18N
実はこの対応は簡単にできて、 Assets 以下に I18N 関連の DLL を追加する、というのを見ました。
見た情報では、 Unity Editor に含まれる lib/mono/unity 以下のファイルをコピーすれば OK とありました。
- I18N.dll
- I18N.CJK.dll
早速これを追加して実行してみたのですが、次のようなエラーが発生してうまく動作はできませんでした。
E Unity : InvalidProgramException: Invalid IL code in I18N.Common.Manager:get_PrimaryManager (): IL_0000: ret
E Unity : at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&)
E Unity : at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <9577ac7a62ef43179789031239ba8798>:0
E Unity : Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
これらを確認した Unity のバージョンは 2019.4.12 でした
動く I18N を放り込む
調べてみると動作する I18N の DLL 関連があるようです。
lib/mono/unity ではなく、 lib/mono/unityjit 以下にある I18N 関連の dll を Assets 以下に追加して実行してみたところ、 Android でも問題なく実行できました。
これらの情報は保証するものではありません。
実際に利用する際には、各自の責任において使ってください。
コメント