论坛首页 > PCB/SMT/钢网 > 立创EDA > LCEDA输出的UNICODE编码BOM和坐...
查看:280  |  回复:1
LCEDA输出的UNICODE编码BOM和坐标 转为GB2312工具
wangjiati
7
主题
38
回复
发表于Mon Mar 05 23:13:56 CST 2018   |  只看该作者 1# 电梯直达

 这里的小工具约等于下面的操作,  真心希望下面这段中提到的 两家 能直接支持,  转换真心只要几句话即可.

 


使用方法:



附件为编译好的EXE:    转为GB2312编码.zip 





c# 源码: 

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

namespace transferEncoding
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Count() == 1 && File.Exists(args[0]) && (Path.GetExtension(args[0]).ToUpper() == ".TXT" || Path.GetExtension(args[0]).ToUpper() == ".CSV"))
            {
                try
                {
                    string temp = Path.GetDirectoryName(args[0]) + @"\"  + Path.GetFileNameWithoutExtension(args[0]) + "_(gb2312)" + Path.GetExtension(args[0]);

                    //ReadAllText方法尝试根据现存的字节顺序标记来自动检测文件的编码。 可检测到编码格式 UTF-8 和 UTF-32(包括 big-endian 和 little-endian)。                    
                    string unicodeString = File.ReadAllText(args[0]);

                    /*-------------------------------------------------------------------------------------*/
                    //检查是否可能是LCEDA输出的BOM或坐标,  如果第一行是指定字符串常量,则替换制表符为 逗号
                    StringReader sr = new StringReader(unicodeString);
                    string first_row = sr.ReadLine();    //读取第一行

                    if(  first_row.Contains("id\tvalue\tquantity\tpackage\tcomponents\tManufacturer Part\tSupplier\tManufacturer\tLCSC") == true ||
                         first_row.Contains("Designator\t Footprint\tMid X\tMid Y\tRef X\t Ref Y\t Pad X\tPad Y\tTB\tRotation\tComment") == true
                        )
                    {
                        unicodeString =  unicodeString.Replace("\t", ",");
                    }
                    /*-------------------------------------------------------------------------------------*/
                    byte[] byteArray = Encoding.Default.GetBytes(unicodeString);
                    byte[] gb2312Bytes = Encoding.Convert(Encoding.Default, Encoding.GetEncoding("gb2312"), byteArray);

                    File.WriteAllBytes(temp, gb2312Bytes);
                    Console.WriteLine("转换完成");

                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    Console.WriteLine("按任意键退出...");
                    Console.ReadKey();
                }
            }
            else
            {
                Console.WriteLine("这是一个命令行程序, 可以直接拖动需要转的文件到程序图标上, 系统会自动启动程序并完成转码");
                Console.WriteLine("支持UTF-8 和 UTF-32(包括 big-endian 和 little-endian)");
                Console.WriteLine("第一个参数为输入文件绝对路径");
                Console.WriteLine("当前仅支持CSV和TXT格式");
                Console.WriteLine("按任意键退出...");
                Console.ReadKey();
            }
            return;
        }
    }
}



打酱油路过.
回复 收藏
  举报
Summving
【官方工作人员】
11
主题
362
回复
发表于Tue Mar 06 08:46:07 CST 2018   |  只看该作者 2#

已经通知他们了,只是还在排期,没有时间开发。。。

感谢楼主开发的小工具,很实用。

Try to be better!立创EDA官方技术支持:QQ3001956291,官方交流群:766712577,立创EDA公众号:lceda-cn
  • 温馨提示:标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考:社区发帖规则
  • 您当前输入了 0个文字。还可以输入8000个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

顶部