zoukankan      html  css  js  c++  java
  • 内码转换单元

    unit senfore;

    interface

    uses
      windows;

      
    function Big52GB(BIG5Str : String): AnsiString;
      
    function GB2Big5(GBStr : String): AnsiString;
      
    function GBCht2Chs(GBStr : String): AnsiString;
      
    function GBChs2Cht(GBStr : String): AnsiString;

    implementation

    function Big52GB(BIG5Str : String): AnsiString;
    {进行big5转GB内码}
    var
      Len: Integer;
      pBIG5Char: PChar;
      pGBCHSChar: PChar;
      pGBCHTChar: PChar;
      pUniCodeChar: PWideChar;
    begin
        
    //String -> PChar
        pBIG5Char :
    = PChar(BIG5Str);
        Len :
    = MultiByteToWideChar(950,0,pBIG5Char,-1,nil,0);
        GetMem(pUniCodeChar,Len
    *2);
        ZeroMemory(pUniCodeChar,Len
    *2);
        
    //Big5 -> UniCode
        MultiByteToWideChar(
    950,0,pBIG5Char,-1,pUniCodeChar,Len);
        Len :
    = WideCharToMultiByte(936,0,pUniCodeChar,-1,nil,0,nil,nil);
        GetMem(pGBCHTChar,Len
    *2);
        GetMem(pGBCHSChar,Len
    *2);
        ZeroMemory(pGBCHTChar,Len
    *2);
        ZeroMemory(pGBCHSChar,Len
    *2);
        
    //UniCode->GB CHT
        WideCharToMultiByte(
    936,0,pUniCodeChar,-1,pGBCHTChar,Len,nil,nil);
        
    //GB CHT -> GB CHS
        LCMapString($
    804,LCMAP_SIMPLIFIED_CHINESE,pGBCHTChar,-1,pGBCHSChar,Len);
        Result :
    = String(pGBCHSChar);
        FreeMem(pGBCHTChar);
        FreeMem(pGBCHSChar);
        FreeMem(pUniCodeChar);
    end;

    function GB2Big5(GBStr : String): AnsiString;
    {进行GB转BIG5内码}
    var
      Len: Integer;
      pGBCHTChar: PChar;
      pGBCHSChar: PChar;
      pUniCodeChar: PWideChar;
      pBIG5Char: PChar;
    begin
      pGBCHSChar :
    = PChar(GBStr);
      Len :
    = MultiByteToWideChar(936,0,pGBCHSChar,-1,nil,0);
      GetMem(pGBCHTChar,Len
    *2+1);
      ZeroMemory(pGBCHTChar,Len
    *2+1);
      
    //GB CHS -> GB CHT
      LCMapString($
    804,LCMAP_TRADITIONAL_CHINESE,pGBCHSChar,-1,pGBCHTChar,Len*2);
      GetMem(pUniCodeChar,Len
    *2);
      ZeroMemory(pUniCodeChar,Len
    *2);
      
    //GB CHT -> UniCode
      MultiByteToWideChar(
    936,0,pGBCHTChar,-1,pUniCodeChar,Len*2);
      Len :
    = WideCharToMultiByte(950,0,pUniCodeChar,-1,nil,0,nil,nil);
      GetMem(pBIG5Char,Len);
      ZeroMemory(pBIG5Char,Len);
      
    //UniCode -> Big5
      WideCharToMultiByte(
    950,0,pUniCodeChar,-1,pBIG5Char,Len,nil,nil);
      Result :
    = String(pBIG5Char);
      FreeMem(pBIG5Char);
      FreeMem(pGBCHTChar);
      FreeMem(pUniCodeChar);
    end;

    function GBCht2Chs(GBStr : String): AnsiString;
    {进行GBK繁体转简体}
    var
      Len: Integer;
      pGBCHTChar: PChar;
      pGBCHSChar: PChar;
    begin
      pGBCHTChar :
    = PChar(GBStr);
      Len :
    = MultiByteToWideChar(936,0,pGBCHTChar,-1,nil,0);
      GetMem(pGBCHSChar,Len
    *2+1);
      ZeroMemory(pGBCHSChar,Len
    *2+1);
      
    //GB CHS -> GB CHT
      LCMapString($
    804,LCMAP_SIMPLIFIED_CHINESE,pGBCHTChar,-1,pGBCHSChar,Len*2);
      Result :
    = String(pGBChsChar);
      
    //FreeMem(pGBCHTChar);
      FreeMem(pGBCHSChar);
    end;

    function GBChs2Cht(GBStr : String): AnsiString;
    {进行GBK简体转繁体}
    var
      Len: Integer;
      pGBCHTChar: PChar;
      pGBCHSChar: PChar;
    begin
      pGBCHSChar :
    = PChar(GBStr);
      Len :
    = MultiByteToWideChar(936,0,pGBCHSChar,-1,nil,0);
      GetMem(pGBCHTChar,Len
    *2+1);
      ZeroMemory(pGBCHTChar,Len
    *2+1);
      
    //GB CHS -> GB CHT
      LCMapString($
    804,LCMAP_TRADITIONAL_CHINESE,pGBCHSChar,-1,pGBCHTChar,Len*2);
      Result :
    = String(pGBCHTChar);
      FreeMem(pGBCHTChar);
      
    //FreeMem(pGBCHSChar);
    end;

    end.
  • 相关阅读:
    [Java基础] 深入jar包:从jar包中读取资源文件
    [Git] git merge和rebase的区别
    windows和linux中换行符的转换
    使用 scikit-learn 实现多类别及多标签分类算法
    python 特征缺失值填充
    多输出回归问题
    python DataFrame获取行数、列数、索引及第几行第几列的值
    Xgboost 模型保存和载入()
    pandas所占内存释放
    SSE,MSE,RMSE,R-square 指标讲解
  • 原文地址:https://www.cnblogs.com/jxgxy/p/1519607.html
Copyright © 2011-2022 走看看