最近在开发中要用到GB2312字符编码(CP936),在C#代码中便有了如此代码

 System.Text.Encoding.GetEncoding()

这在Unity3d 编辑器下运行没有任何问题,打包出exe文件执行时,便会出现程序无响应的情况,查看日志文件可以看到如下错误:

  NotSupportedException: CodePage 936 not supported

谷歌后...便将I18N.DLLI18N.CJK.DLL 从Unity安装目录(Editor\Data\Mono\lib\mono\unity 和 Editor\Data\Mono\lib\mono\2.0 两个目录下都存在,PC上测试均可使用)拷贝到项目目录的Assets目录下,然后重新编译出包,正常运行。

在出iOS包时,又再次出现 NotSupportedException: CodePage 936 not supported。前面虽然已经把相关库文件放到项目之中,但仔细查看xcode工程目录,其下并没有I18N.DLL 和 I18N.CJK.DLL 文件的任何影子。此时便想到我们的unity项目中使用的stripping level可能会有影响,索性暂时disable stripping,尝试重新出iOS包,发现一切正常,再看xcode工程目录下果然也有了I18N.DLL 和 I18N.CJK.DLL。

那么,问题又来了,如果仍想继续使用stripping,有没有办法?

unity 官方手册(http://docs.unity3d.com/Manual/iphone-playerSizeOptimization.html)中提到,可以通过添加白名单的方式,在使用stripping时,忽略掉指定的库。方式是在Assets根目录下添加link.xml文件,其内容格式如下

 <?xml version="1.0" encoding="utf-8"?>
<linker>
<assembly fullname="I18N">
<type fullname="I18N.Common.Manager" preserve="all"/>
</assembly>
<assembly fullname="I18N.CJK">
<type fullname="I18N.CJK.CP936" preserve="all"/>
</assembly>
</linker>

使用CP936,只需要添加上述内容。

如此,将该link.xml文件添加到Assets根目录下后,开启stripping后,CP936也可以正常使用了~

Unity3d发布的iOS产品中使用GB2312字符编码(CP936)的更多相关文章

  1. Java中常用的字符编码-解析

    ASCII字符编码 美国信息互换标准代码,为罗马字母编制的一套编码,主要用于表达现代英语和其他西欧语言中的字符,1字节的7位表示一个字符. ISO-8859-1字符编码 ISO为西欧语言中的字符制定的 ...

  2. Python 2中万恶的字符编码

    Python2中如果文件存在中文,必须要指定#-*- coding:utf8 -*-或#coding:utf8,否则会报错.那这是为什么呢? 一.原理解析 我们知道,在计算机发展初期,计算机只能识别字 ...

  3. Java web应用中的常见字符编码问题的解决方法

    以下是 Java Web应用的常见编码问题 1. html页面的编码 在web应用中,通常浏览器会根据http header: Content-type的值来决定用什么encoding, 比如遇到Co ...

  4. [转载]Java web应用中的常见字符编码问题的解决方法

    以下是 Java web应用的常见编码问题 1. html页面的编码 在web应用中,通常浏览器会根据http header: Content-type的值来决定用什么encoding, 比如遇到Co ...

  5. Python中文文件处理中涉及的字符编码及字符集

    在现在的互联网,字符编码是互联网信息交互的一个重要基础,各种语言都有支持信息编码的机制,Python也不例外.Python除了字符编码之外,对于字节码和字符串两种类型有严格区分,字符串是本地可以读取的 ...

  6. Python2/3的中、英文字符编码与解码输出: UnicodeDecodeError: 'ascii' codec can't decode/encode

    摘要:Python中文虐我千百遍,我待Python如初恋.本文主要介绍在Python2/3交互模式下,通过对中文.英文的处理输出,理解Python的字符编码与解码问题(以点破面). 前言:字符串的编码 ...

  7. 关于web.xml中配置Spring字符编码过滤器以解决中文乱码的问题

    当出现中文乱码问题,Spring中可以利用CharacterEncodingFilter过滤器解决,如下代码所示: <!-- Spring字符编码过滤器:解决中文乱码问题 --> < ...

  8. mysql中设置默认字符编码为utf-8

    使用过Linux的同志就知道,在Linux下安装mysql,尤其是使用yum安装的时候,我们是没法选择其默认的字符编码方式.这个就是一个比较头痛的问题,如果Linux数据库中使用到中文的时候,乱码问题 ...

  9. PHP中SimpleXMLElement对象字符编码

    最近在使用SimpleXMLElement来生成和解析XML. 由于我们使用PHP开发的这边使用UTF-8编码,而对方使用GBK编码,因此就遇到了中文字符编码问题. 后来发现,XML内部的编码与其头 ...

随机推荐

  1. Python基础之爬虫(持续更新中)

    python通过urllib.request.urlopen("https://www.baidu.com")访问网页 实战,去网站上下载一只猫的图片 import urllib. ...

  2. ROS使用国内的DDNS服务

    未测试.转载余松老师的作品 虽然RouterOS 加入了cloud功能,但最近在配置RB2011的时候发现不好使,更新域名后无法正确解析到我的IP地址,虽然在cloud的public address中 ...

  3. mysql如何处理外码约束

    http://hi.baidu.com/wangzhiqing999/item/e74b2be28be445a3c00d7528 MySQL 外键约束 -- 创建测试主表. ID 是主键.CREATE ...

  4. C++11奇怪的语法

    1. istream_iterator 简而言之,istream_iterator像操作容器一样操作istream.例如下面代码,从std::cin构造std::istream_iteream< ...

  5. hibench学习

    hibench包含几个hadoop的负载 micro benchmarksSort:使用hadoop randomtextwriter生成数据,并对数据进行排序. Wordcount:统计输入数据中每 ...

  6. OpenCL 矢量存取

    ▶ 函数 vloadn 和 vstoren 来实现全局存储器和局部存储器之间的向量拷贝 ● 代码 #include <stdio.h> #include <stdlib.h> ...

  7. 「小程序JAVA实战」小程序视频播放的时候生命周期的控制(56)

    转自:https://idig8.com/2018/09/23/xiaochengxujavashizhanxiaochengxushipinbofangdeshihoushengmingzhouqi ...

  8. JDK8新特性:函数式接口@FunctionalInterface的使用说明

    我们常用的一些接口Callable.Runnable.Comparator等在JDK8中都添加了@FunctionalInterface注解. 通过JDK8源码javadoc,可以知道这个注解有以下特 ...

  9. 配置ssh免密登录后,仍需要密码才能登陆其中某台机器

    提示:如果是三台机器A.B.C配置了ssh免密登录,从A和B上登录C需要密码,则需要修改C的配置 修改配置文件如下: sudo vi /etc/ssh/sshd_config #禁用root账户登录, ...

  10. 01-A-1: 计算