• Delphi 中big5 转 Unicode 函数


    function Big5ToUnicode(str  Char): widestring;
    
    var
    
      len: integer;
    
    begin
    
      len:=MultiByteToWideChar(950,0,PChar(str),-1,nil,0);
    
      setlength(result,len-1);
    
      MultiByteToWideChar(950, 0, PChar(str), -1, pwidechar(result), len+1);
    
      result:=' '+result;
    
    end;

    MultiByteToWideChar(950, 0, PChar(str), -1, pwidechar(result), len+1) 各个参数含义:

    950:码表,950即Big5和Unicode的对应表;
    0:这一位写0就可以了;
    PChar(str):字符串的地址(这里又用PChar强行转换了一次,应该没必要);
    -1:字符串长度,如果是-1就会自动计算长度并转换到字符串结束;
    pwidechar(result):保存结果的地址;
    len+1:缓冲区大小,如果为零函数就返回需要的缓冲区大小。

    在Big5ToUnicode函数中MultiByteToWideChar使用了两次,第一次是计算所需缓冲区大小,第二次才是正式的转换。结果的长度设成多少需要实验一下,因为结尾或许有不想要的字符。但是不能不设或设成0,这样result并没有获得地址分配,转换会出错。

    如果是GB2312,码表号是936。大部分的转码软件都是使用了这个API,GB2312与Big5的互相转换也是通过Unicode进行的。

  • 相关阅读:
    PHP ceil() 函数
    PHP Array 函数
    php中的include()的使用技巧
    [观察者模式]在游戏开发中的应用
    [策略模式]在游戏开发中的应用
    使用EA将源码转化为类图
    PAT 1013 数素数 (20)
    PAT 1034 有理数四则运算(20)
    PAT 1033 旧键盘打字(20)
    PAT 1032 挖掘机技术哪家强(20)
  • 原文地址:https://www.cnblogs.com/MaxWoods/p/3884972.html
Copyright © 2020-2023  润新知