本サイトでは、アフィリエイト広告およびGoogleアドセンスを利用しています。

Encoding.GetEncoding(932) への対応

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 でも問題なく実行できました。

これらの情報は保証するものではありません。
実際に利用する際には、各自の責任において使ってください。

プログラミング
すらりんをフォローする
すらりん日記
タイトルとURLをコピーしました