Delphi 中big5 转 Unicode 函数
function Big5ToUnicode(str Char): widestring; var len: integer; begin len:=MultiByteToWideChar(,,PChar(str),-,nil,); setlength(result,len-); MultiByteToWideChar(, , PChar(str), -, pwidechar(result), len+); 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进行的。
Delphi 中big5 转 Unicode 函数的更多相关文章
- [教程]Delphi 中三种回调函数形式解析
Delphi 支持三种形式的回调函数 全局函数这种方式几乎是所有的语言都支持的,类的静态函数也可以归为此类,它保存的只是一个函数的代码起始地址指针( Pointer ).在 Delphi 中声明一般为 ...
- 奇淫怪巧之在Delphi中调用不申明函数
前一阵子,研究了一段时间的Win32Asm,研究到后来发现Win32的ASM实际上还是和C版的介绍的一样.甚至还封装了一个简版的类似VCL库结构框架的32ASM结构库,不过搞着搞着就没兴趣了,也没继续 ...
- Delphi中常用字符串处理函数
.copy(str,pos,num) 从str字符串的pos处开始,截取num个字符的串返回. 假设str为,)=,)='def' .concat(str1,str2{,strn}) 把各自变量连接起 ...
- BCB/Delphi中常用的VCL函数说明(文件函数)
--------------------文件操作--------------------函数名称:ChangeFileExt函数说明:更改指定文件的扩展名,函数原型如下:AnsiString __fa ...
- BCB/Delphi中常用的VCL函数说明(字符串函数)
本文档是ccrun(老妖)根据网上资料整理而成. --------------------内存分配--------------------函数名称:AllocMem函数说明:在队中分配指定字节的内存块 ...
- Delphi中Inputbox 和Inputquery 函数的使用
原文转自:http://blog.csdn.net/zengcong2013/article/details/18355959 inputbox的返回值是,你在输入框中输入的文字.而inputquer ...
- Delphi中Format与FormatDateTime函数详解
copy:http://hi.baidu.com/yunfanleo/blog/item/0c51d9cdbc0531550eb34558.html Format是一个很常用,却又似乎很烦的方法,本人 ...
- delphi 中COPY()函数的意思
Trim(copy(m,11,5)):copy里面的3个参数(m,11,5)分别是什么意思?COPY还有其他的参数吗? m :就是copy源,就是一个字符串,表示你将要从m里copy一些东西11 : ...
- delphi中pos和Ansipos函数的区别
POS和ANSIPOS的主要区别在于,POS参数多用于是一个字符,而ANSIPOS多用于是多个字符: 例如:i:=pos('a','sssssas'); i:=ansipos('abc','sdabc ...
随机推荐
- CentOS中在/etc/rc.local添加开机自启动项启动失败
应项目要求需要在开机的时候启动自己的Agent程序,想当然的直接就往/etc/rc.local当中添加启动命令,结果重启之后发现什么都没有发生....一开始还以为是Python路径的问题,结果改成绝对 ...
- 【linux】tcpdump抓包
tcpdump -i eth0 host 192.168.11.22 -w ./target.cap 上面指令,抓取eth0中与192.168.11.22相关的流量,保存到target.cap中
- python接口自动化测试五:乱码、警告、错误处理
乱码: 以content字节流输出,解码成utf-8: print(r.encoding) # 查看返回的编码格式: 去掉Warning警告: import urllib3 urllib3.dis ...
- python 全栈开发,Day19(组合,组合实例,初识面向对象小结,初识继承)
一.组合 表示的一种什么有什么的关系 先来说一下,__init__的作用 class Dog: def __init__(self, name, kind, hp, ad): self.name = ...
- LINQ学习之旅(五)
Union All/Union/Intersect操作和Top/Bottom操作和Paging操作和SqlMethods操作 Union All/Union/Intersect操作 适用场景:对两个集 ...
- javax.inject包
javax.inject包 java提出的依赖注入标准,有别于以下传统的对象获取方式 构造方法 工厂模式 服务器定位模式(e.g. JNDI) 开发过程中是会有很多层层依赖的对象的,例如,Stopwa ...
- HTML&CSS学习笔记
<table> <thead> <tr> // table row <th></th> // table head & ...
- ajax请求正常,返回json格式,后台没问题,浏览器500
1.使用的是springmvc中的 @ResponseBody 注解 ,后台不报错,.正常走完:以为使用这个注解就可以正常返回json格式的数据:所以一直没有怀疑是注解的问题: 以为是ajax本身 ...
- 诡异的楼梯 HDU1180
这题做了很久 做好了感觉很简单... 现在做题思路更加清晰了 一个要点就是 当楼梯过不去的时候不能是先过去时间加2 必须得回去等一秒 否则queue的时间顺序会被打破 #include< ...
- simple简单消息队列
一:介绍 1.优缺点 简单,但是耦合性较高. 这种模式是生产者与消费者一一对应,就是一个产生者,有一个消费者来消费. 如果,多个消费者想消费一个队列中的消息就不适合了.这种情况在后面会接着介绍. 2. ...