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.
  • 相关阅读:
    Luckysheet如何初始化含合并单元格的数据
    Luckysheet如何一键导入本地Excel
    又发现一款纯js开源电子表格Luckysheet
    Sublime Text3 注册码(Windows/Build 3176版本)| 开发工具
    Python初学者笔记(4)-简单的通讯录
    Python初学者笔记(3):输出列表中的奇数/奇数项,字符串中的偶数项,字符串大小写转换
    安装wampserver出现“The Program can't start because MSVCR110.dll is missing from your computer. Try reinstalling the program to fix this problem”
    python初学者笔记(2):阿拉伯数字转换成中文大写
    Python初学者笔记:打印出斐波那契数列的前10项
    JavaScript弹出对话框的三种方式
  • 原文地址:https://www.cnblogs.com/jxgxy/p/1519607.html
Copyright © 2011-2022 走看看