将GB2312编码的文件转成Unity使用的UTF8无bom格式
主要用批处理执行 Ansi2Utf8.exe XXXXX.txt 

源代码
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace Ansi2Utf8
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. if (args.Length < 1)
  14. {
  15. Console.WriteLine("None file path !!!");
  16. return;
  17. }
  18. string fileName = args[0];
  19. try
  20. {
  21. FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
  22. if (fs == null)
  23. {
  24. Console.WriteLine(fileName + " is null !!!");
  25. return;
  26. }
  27. byte[] flieByte = new byte[fs.Length];
  28. fs.Read(flieByte, 0, flieByte.Length);
  29. fs.Close();
  30. if (IsUtf8(flieByte))
  31. {
  32. Console.WriteLine(fileName + " is utf8 coding");
  33. return;
  34. }
  35. Encoding ansi = Encoding.GetEncoding("GB2312");
  36. Encoding utf = Encoding.UTF8;
  37. flieByte = Encoding.Convert(ansi, utf, flieByte);
  38. StreamWriter docWriter;
  39. var utf8WithoutBom = new UTF8Encoding(false);
  40. docWriter = new StreamWriter(fileName, false, utf8WithoutBom);
  41. docWriter.Write(utf.GetString(flieByte));
  42. docWriter.Close();
  43. }
  44. catch
  45. {
  46. Console.WriteLine(fileName + " convert error !!!!!!!!!!!!!!");
  47. }
  48. }
  49. static bool IsUtf8(byte[] bs)
  50. {
  51. int len = bs.Length;
  52. if (len >= 3 && bs[0] == 0xEF && bs[1] == 0xBB && bs[2] == 0xBF)
  53. {
  54. return true; //Encoding.UTF8;
  55. }
  56. int[] cs = { 7, 5, 4, 3, 2, 1, 0, 6, 14, 30, 62, 126 };
  57. for (int i = 0; i < len; i++)
  58. {
  59. int bits = -1;
  60. for (int j = 0; j < 6; j++)
  61. {
  62. if (bs[i] >> cs[j] == cs[j + 6])
  63. {
  64. bits = j;
  65. break;
  66. }
  67. }
  68. if (bits == -1)
  69. {
  70. return false; //Encoding.Default;
  71. }
  72. while (bits-- > 0)
  73. {
  74. i++;
  75. if (i == len || bs[i] >> 6 != 2)
  76. {
  77. return false; //Encoding.Default;
  78. }
  79. }
  80. }
  81. return true; //Encoding.UTF8;
  82. }
  83. }
  84. }

附件列表

Ansi2Utf8 小工具的更多相关文章

  1. 2000条你应知的WPF小姿势 基础篇<45-50 Visual Tree&Logic Tree 附带两个小工具>

    在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000Things You Should Know About C# 和 2,0 ...

  2. 【原】得心应手小工具开发——IE代理快速切换工具

    一.引入 因为公司里上外网要经常换IE代理地址,每次切换地址都要进到Internet Options里去设置一番,经常切换的话很是麻烦,由于用了点时间作个小工具来方便自己. 二.实现思路 其实思路很简 ...

  3. ContentProvider域名替换小工具

    开发项目域名想怎么换就怎么换,就是这么任性! 这是一个很有意思的小工具! 这是一个方便开发人员和测试人员的小工具!! 吐槽: 一直在做Android开发,一直总有一个问题存在:做自己公司的apk开发时 ...

  4. c 小工具的使用

    1. 这是一个gps 数据过滤的小工具,目的是过滤到gps数据中不符合要求的数据,然后转为json 数据 需要两个小工具 bermuda.c   ------>  过滤一定范围的数据 geo2j ...

  5. 偷懒小工具 - SSO单点登录通用类(可跨域)

    写在前面的话 上次发布过一篇同样标题的文章.但是因为跨域方面做得不太理想.我进行了修改,并重新分享给大家. 如果这篇文章对您有所帮助,请您点击一下推荐.以便有动力分享出更多的"偷懒小工具&q ...

  6. [原创] Delphi小工具(Windows资源管理器右键菜单扩展)

    两个小工具 1. 项目临时文件清理 2. Android Ndk 编译 c/c++ jni 源码工具. 下载后,点击Reg.bat就可以完成注册安装.不需要时点击 UnReg.Bat 就可以删除菜单. ...

  7. 介绍两个Ubuntu上的桌面小工具

    经常使用Windows10,Sticky Notes和壁纸自动切换功能挺好用的.我经常会使用Sticky Notes来记录一些信息,内容是实时保存的,而且启动的时候会自动显示在桌面上.其实Ubuntu ...

  8. WPF根据Oracle数据库的表,生成CS文件小工具

    开发小工具的原因: 1.我们公司的开发是客户端用C#,服务端用Java,前后台在通讯交互的时候,会用到Oracle数据库的字段,因为服务器端有公司总经理开发的一个根据Oracle数据库的表生成的cla ...

  9. WPF开发查询加班小工具

    先说一下,我们公司是六点下班,超过7点开始算加班,但是加班的时间是从六点开始计算,以0.5个小时为计数,就是你到了六点半,不算加班半小时,但是加班到七点半,就是加班了一个半小时. 一.打卡记录 首先, ...

随机推荐

  1. Scoop - 在Windows命令行上进行程序安装

    2019-01-28  22:49:21 资料来源自Scoop官方网站以及github上的帮助文档 如果有疑惑或者觉得文章有错误请留言以帮助改正 补充内容(2019-04-09 21:11:36):不 ...

  2. MAC上postman离线安装时提示加载扩展程序出错怎么办?

    目前的postman插件如果想正常使用,必须安装Postman Interceptor插件,这样才能直接使用chrome浏览器的cookie等信息,否则postman是无法完成老版本的功能的.post ...

  3. Spring 源码学习(一)

    工作好多年了,越来越心浮气躁了,好多东西都是一知半解的,所以现在需要静下心来好好学习一门技术. 就选Spring了, spring 设计java 开发的方方面面. 期待目标 对Spring 有个更深层 ...

  4. vue api

    1. vue.config.silent = true 取消 Vue 所有的日志与警告. 2.vue.config.productionTip= false 设置为 false 以阻止 vue 在启动 ...

  5. 九度oj 题目1089:数字反转

    题目1089:数字反转 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3531 解决:1935 题目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任 ...

  6. How to automate PowerPoint using VB

    Microsoft has an article that explains how to automate PowerPoint using VB For some odd reason they' ...

  7. Spring Boot配置文件规则以及使用方法官方文档查找以及Spring项目的官方文档查找方法

    比如要使用Spring Boot实现一个功能,最直接的方式是Google,但是往往搜索出来的都比较乱,关键是乱在不同的版本上,比如1.x版本和2.x版本的配置是不一样的.最明显区别是在使用Thymel ...

  8. Oracle Multitenant Environment (一) About

    About oracle mulittenant environment The multitenant architecture enables an Oracle database to func ...

  9. uva 11212 - Editing a Book(迭代加深搜索 IDA*) 迭代加深搜索

    迭代加深搜索 自己看的时候第一遍更本就看不懂..是非常水,但智商捉急也是没有办法的事情. 好在有几个同学已经是做过了这道题而且对迭代加深搜索的思路有了一定的了解,所以在某些不理解的地方询问了一下他们的 ...

  10. 创建SharePoint 2010 Timer Job

    好久没有写博客了. 近期在使用SharePoint 2010中Timer Job的功能,有了一点心得,分享一下. 我个人觉得SharePoint Timer Job和Windows Service或者 ...