拡張 ASCII サポートに の 1252 エンコーディングを使用System.Text.Encoding
して、1 バイトの 8 番目のビットを完全に利用していScripting Backend
ますAssets/link.xml
。
<assembly fullname="I18N">
<type fullname="I18N.Common" preserve="all"/>
<type fullname="I18N.Common.ByteEncoding" preserve="all"/>
<type fullname="I18N.Common.Handlers" preserve="all"/>
<type fullname="I18N.Common.Manager" preserve="all"/>
<type fullname="I18N.Common.MonoEncoder" preserve="all"/>
<type fullname="I18N.Common.MonoEncoding" preserve="all"/>
<type fullname="I18N.Common.Strings" preserve="all"/>
</assembly>
<assembly fullname="I18N.West">
<type fullname="I18N.West" preserve="all"/>
<type fullname="I18N.West.ENCwindows_1252" preserve="all"/>
<type fullname="I18N.West.CP1252" preserve="all"/>
</assembly>
ただし、IL2CPP に切り替えると、ビルド中に関数の一部が取り除かれたため、クラッシュが発生します。Stripping Level
Unityのプレーヤー設定で無効にしていますが..
これが私のランタイムクラッシュログです:
IL2CPP クラッシュ:
NotSupportedException: CodePage 1252 not supported
at System.Security.Cryptography.TripleDESCryptoServiceProvider.CreateEncryptor (System.Byte[] rgbKey, System.Byte[] rgbIV) [0x00000] in <filename unknown>:0
at System.Text.Encoding.GetEncoding (Int32 codepage) [0x00000] in <filename unknown>:0
preserve
link.xmlのステートメントを削除すると、Mono と同じになります。
NotSupportedException: CodePage 1252 not supported
at System.Text.Encoding.GetEncoding (Int32 codepage) [0x00000] in <filename unknown>:0
問題のあるコードの使用方法は次のとおりです。
byte[] bytes = System.Text.Encoding.GetEncoding(1252).GetBytes(str); // exactly 8-bit
string str = System.Text.Encoding.GetEncoding(1252).GetString(bytes);
事前にどうもありがとうございました!