0
点赞
收藏
分享

微信扫一扫

AnsiToUtf8


//
//                              //
//           AnsiToUtf8         //
//            2010.7.3          //
//             //
//                              //
//
program ansi2utf8;
{$APPTYPE CONSOLE}
{$R *.res}
uses
  windows, SysUtils, classes;
label
  start, restart;

var fi, fo, fin, fout: textfile; //
  s, T, k, Si: string;
  hOutput: THandle;
  TS, Sr: TStringList;

begin
//----------------------------
  try
    begin
      if ParamCount = 2 then
        begin
          assignfile(fi, ParamStr(1));
          reset(fi);
          assignfile(fo, ParamStr(2));
          rewrite(fo);
          s := #239#187#191;
          write(fo, s);
          while not eof(fi) do
            begin
              readln(fi, s);
              s := AnsitoUtf8(s);
              writeln(fo, s);
            end;
          begin
            closefile(fi);
            closefile(fo);
            if FileExists(ParamStr(2)) = true then
              begin
                writeln('Operation Successful!');
        //readln;
              end
            else
              begin
                SetConsoleTextAttribute(hOutput, 12);
                writeln('Operation Failed!');
        //readln;
              end
          end
        end
//------------------------
      else if ParamCount = 3 then
        begin
          if (UpperCase(Paramstr(3)) = '-K') then
            begin
              Ts := TStringList.Create;
              assignfile(Fi, ParamStr(1));
              reset(fi);
              assignfile(Fo, 'Buffer');
              rewrite(Fo);
  //s := #239#187#191;
  //write(fo, s);
  //readln(fi, S);
  //if s <> #239#187#191 then
              begin
                while not eof(Fi) do
                  begin
                    readln(Fi, S);
      //writeln(S);                            //调试
                    s := utf8toansi(S);
      //writeln(S);                            //调试
                    writeln(Fo, s);
                  end;
    //---------------------------
                closefile(fi);
                closefile(fo);
                assignfile(Fi, ParamStr(1));
                reset(fi);
                readln(Fi, S);
                S := utf8toansi(S);
                T := StringReplace(s, '?', '', [rfIgnoreCase]);
                try
                  Ts.LoadFromFile('Buffer');
                  Ts.Text := StringReplace(Ts.Text, s, t, [rfIgnoreCase]);
                  TS.SaveToFile(ParamStr(2));
                finally
                  Ts.Free;
                  closefile(fi);
                  deleteFile('Buffer');
                end;
              end;
              begin
                if FileExists(ParamStr(2)) = true then
                  begin
                    writeln('Operation Successful!');
                  end
                else
                  begin
                    writeln('Operation Failed!');
                  end
              end
            end
          else
            begin
              writeln('"' + paramstr(3) + '"为无效参数!');
              readln;
            end
        end
    //-----------------------------------------
      else
        begin //1
//--------------------------------------------------------------------     内部
          SetConsoleTitle('AnsiToUtf8    计算机DIY群_2010.7.3');
          hOutput := GetStdHandle(STD_OUTPUT_HANDLE);
          SetConsoleTextAttribute(hOutput, 13);
      //SetConsoleTextAttribute(hOutput, FOREGROUND_INTENSITY);
          writeln('使用方法:');
          SetConsoleTextAttribute(hOutput, 12);
          Writeln('参数(绝对路径)');
          SetConsoleTextAttribute(hOutput, 14);
          writeln('<输入Ansi格式文件> <输出Utf8格式文件>');
          SetConsoleTextAttribute(hOutput, 15);
          writeln('<CMD>例:AnsiToUtf8 Ansi.txt Utf8.txt      输出为Utf8格式文件');
          writeln('         AnsiToUtf8 Utf8.txt Ansi.txt -k   输出为Ansi格式文件');
          writeln('或:     Ansi.txt Utf8.txt                 输出为Utf8格式文件');
          writeln('         Utf8.txt Ansi.txt -k              输出为Ansi格式文件');
          writeln('                                                             ');
          writeln('                                        Haiou327    V2010.7.3');
          //readln;
          restart:
          begin
          SetConsoleTextAttribute(hOutput, 15);
          T:='';
          //Si:='';
          s:='';
          k:='';
          readln(T);
          Sr := TStringlist.Create;
          Sr.DelimitedText := T;
          Sr.Delimiter := ' ';
          Si := Sr[0];
          k := sr[1];
          if Sr.Count = 2 then
            begin //2
              assignfile(fi, Si);
              reset(fi);
              assignfile(fo, k);
              rewrite(fo);
              s := #239#187#191;
              write(fo, s);
              while not eof(fi) do
                begin
                  readln(fi, s);
                  s := AnsitoUtf8(s);
                  writeln(fo, s);
                end;
              begin
                closefile(fi);
                closefile(fo);
                Sr.Free;
                writeln('Operation Successful!');
                //readln;
                goto restart;
              end


            end
          else

            begin
              if Sr.Count = 3 then
                begin
                  if (UpperCase(Sr[2]) = '-K') then

                    begin
                      Ts := TStringList.Create;
                      Si := Sr[0];
                      k:=sr[1];
                      assignfile(Fi, Si);
                      reset(fi);
                      assignfile(Fo, 'Buffer');
                      rewrite(Fo);
                      Si := Sr[0];
                      //k := sr[1];
                      begin
                        while not eof(Fi) do
                          begin
                            readln(Fi, S);
                            s := utf8toansi(S);
                            writeln(Fo, s);
                          end;
                        closefile(fi);
                        closefile(fo);
                        assignfile(Fi, Sr[0]);
                        reset(fi);
                        readln(Fi, S);
                        S := utf8toansi(S);
                        T := StringReplace(s, '?', '', [rfIgnoreCase]);
                        Ts.LoadFromFile('Buffer');
                        Ts.Text := StringReplace(Ts.Text, s, t, [rfIgnoreCase]);
                        TS.SaveToFile(sr[1]);
                        Sr.Free;
                        Ts.Free;
                        closefile(fi);
                        deleteFile('Buffer');
                     end;
                      writeln('Operation Successful!');
                      //T:='';
                      //readln;
                      goto restart;
                    end //ppp
                  else
                    begin
                      SetConsoleTextAttribute(hOutput, 12);
                      writeln('"'+(Sr[2]) + '" 为无效参数!');
                      //readln;
                      goto restart;
                    end
                end //0000
            else
             begin
             SetConsoleTextAttribute(hOutput, 12);
             writeln('"'+T+'"参数过长不被接收,请重新输入!');
             SetConsoleTextAttribute(hOutput, 15);
             writeln('例:Ansi.txt Utf8.txt      输出为Utf8格式文件');
             writeln('    Utf8.txt Ansi.txt -k   输出为Ansi格式文件');

            goto restart;
            end

            end;
            end             //restart

        end //1
    end //-----------外部

//--------------------------------------------------------------------------参数
  except
    SetConsoleTextAttribute(hOutput, 12);
    writeln('"' + Paramstr(1) + Si + '" 目标文件不存在或程序异常终止!');
    SetConsoleTextAttribute(hOutput, 15);
    readln;
    exit;
  end;
end.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

举报

相关推荐

0 条评论