zoukankan      html  css  js  c++  java
  • unity3d 中文乱码解决方法——cs代码文件格式批量转化UTF8

    在Unity3d中经常会碰到中文乱码的问题,比如代码中的[AddComponentMenu("GameDef/AI/战机AI")],注释,中文文本等等

    其原因在于,unity本身是不顾及地区的,所以默认全部为unicode编码,造成中文乱码

    解决方法很多,比如,

    • 一个一个文件用文本工具转成utf8格式
    • 修改unity3d文件模板

    第一种方法,在数量少的时候可行,数量多的时候就比较耗时和重复

    第二种方法在项目前期做好的话非常有效,但是如果之前没这么处理就就没什么用了,而且一旦unity版本升级或者使用其他版本,需要重新修改模板

    所以总结起来,可以这样处理:

    • 尽可能早地修改模板(不修改也行)
    • 尽可能不要在unity中创建脚本(使用Resharpe工具自动生成类文件十分方便,并且继承编码)
    • 如果需要转换编码,建议使用批量编码转换工具

    批量编码转换工具代码

    使用visual studio创建一个控制台程序

    代码如下

    using System;
    using System.IO;
    using System.Text;

    namespace ToUTF8
    {
        class Program
        {
            static void Main(string[] args)
            {
                var dir = Directory.GetCurrentDirectory();
                foreach (var f in new DirectoryInfo(dir).GetFiles("*.cs", SearchOption.AllDirectories))
                {
                    var s = File.ReadAllText(f.FullName, Encoding.Default);
                    try
                    {
                        File.WriteAllText(f.FullName, s, Encoding.UTF8);
                    }
                    catch (Exception)
                    {
                        continue;
                    }
                }
            }
        }
    }

    编译生成的exe文件放在Unity项目中,双击运行,等待运行即可

    个人博客请访问:http://www.cnblogs.com/CodeGize/
  • 相关阅读:
    POJ 3261 Milk Patterns (求可重叠的k次最长重复子串)
    UVaLive 5031 Graph and Queries (Treap)
    Uva 11996 Jewel Magic (Splay)
    HYSBZ
    POJ 3580 SuperMemo (Splay 区间更新、翻转、循环右移,插入,删除,查询)
    HDU 1890 Robotic Sort (Splay 区间翻转)
    【转】ACM中java的使用
    HDU 4267 A Simple Problem with Integers (树状数组)
    POJ 1195 Mobile phones (二维树状数组)
    HDU 4417 Super Mario (树状数组/线段树)
  • 原文地址:https://www.cnblogs.com/CodeGize/p/5559263.html
Copyright © 2011-2022 走看看