Delphi汉字简繁体转换代码(分为D7和D2010版本)
//delphi 7 Delphi汉字简繁体转换代码
unit ChineseCharactersConvert;
interface
uses
Classes, Windows;
type
TGBBIG5Convert = class(TObject)
public
class function BIG5ToGB(BIG5Str : String): AnsiString;
class function GBToBIG5(GBStr : String): AnsiString;
class function GBChs2Cht(GBStr: String): AnsiString;
class function GBCht2Chs(GBStr: String): AnsiString;
end;
implementation
class function TGBBIG5Convert.BIG5ToGB(BIG5Str : String): AnsiString;
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;
{进行GBK简体转繁体}
class function TGBBIG5Convert.GBChs2Cht(GBStr: String): AnsiString;
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);
LCMapString($804, LCMAP_TRADITIONAL_CHINESE, pGBCHSChar, -1, pGBCHTChar, Len * 2);
result := String(pGBCHTChar);
FreeMem(pGBCHTChar);
end;
{进行GBK繁体转简体}
class function TGBBIG5Convert.GBCht2Chs(GBStr: String): AnsiString;
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);
LCMapString($804, LCMAP_SIMPLIFIED_CHINESE, pGBCHTChar, -1, pGBCHSChar, Len * 2);
result := String(pGBCHSChar);
FreeMem(pGBCHSChar);
end;
class function TGBBIG5Convert.GBToBIG5(GBStr : String): AnsiString;
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;
end.
//delphi 2010 Delphi汉字简繁体转换代码
unit ChineseCharactersConvert;
interface
uses
Classes, Windows;
type
TGBBIG5Convert = class(TObject)
public
class function BIG5ToGB(BIG5Str : String): AnsiString;
class function GBToBIG5(GBStr : String): AnsiString;
class function GBChs2Cht(GBStr: String): AnsiString;
class function GBCht2Chs(GBStr: String): AnsiString;
end;
implementation
class function TGBBIG5Convert.BIG5ToGB(BIG5Str : String): AnsiString;
var
Len: Integer;
pBIG5Char: PChar;
pGBCHSChar: PChar;
pGBCHTChar: PChar;
pUniCodeChar: PWideChar;
begin
//String -> PChar
pBIG5Char := PChar(BIG5Str);
Len := MultiByteToWideChar(950,0,pansichar(pBIG5Char),-1,nil,0);
GetMem(pUniCodeChar,Len*2);
ZeroMemory(pUniCodeChar,Len*2);
//Big5 -> UniCode
MultiByteToWideChar(950,0,pansichar(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,pansichar(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;
{进行GBK简体转繁体}
class function TGBBIG5Convert.GBChs2Cht(GBStr: String): AnsiString;
Var
Len: integer;
pGBCHTChar: PChar;
pGBCHSChar: PChar;
Begin
pGBCHSChar := PChar(GBStr);
Len := MultiByteToWideChar(936, 0, pansichar(pGBCHSChar), -1, Nil, 0);
GetMem(pGBCHTChar, Len * 2 + 1);
ZeroMemory(pGBCHTChar, Len * 2 + 1);
LCMapString($804, LCMAP_TRADITIONAL_CHINESE, pGBCHSChar, -1, pGBCHTChar, Len * 2);
result := String(pGBCHTChar);
FreeMem(pGBCHTChar);
end;
{进行GBK繁体转简体}
class function TGBBIG5Convert.GBCht2Chs(GBStr: String): AnsiString;
Var
Len: integer;
pGBCHTChar: PChar;
pGBCHSChar: PChar;
Begin
pGBCHTChar := PChar(GBStr);
Len := MultiByteToWideChar(936, 0, pansichar(pGBCHTChar), -1, Nil, 0);
GetMem(pGBCHSChar, Len * 2 + 1);
ZeroMemory(pGBCHSChar, Len * 2 + 1);
LCMapString($804, LCMAP_SIMPLIFIED_CHINESE, pGBCHTChar, -1, pGBCHSChar, Len * 2);
result := String(pGBCHSChar);
FreeMem(pGBCHSChar);
end;
class function TGBBIG5Convert.GBToBIG5(GBStr : String): AnsiString;
var
Len: Integer;
pGBCHTChar: PChar;
pGBCHSChar: PChar;
pUniCodeChar: PWideChar;
pBIG5Char: PChar;
begin
pGBCHSChar := PChar(GBStr);
Len := MultiByteToWideChar(936,0,pansichar(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,pansichar(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,pansichar(pBIG5Char),Len,nil,nil);
Result := String(pBIG5Char);
FreeMem(pBIG5Char);
FreeMem(pGBCHTChar);
FreeMem(pUniCodeChar);
end;
end.
---------------------
作者:清风古韵
来源:CSDN
原文:https://blog.csdn.net/ttpage/article/details/9161703
版权声明:本文为博主原创文章,转载请附上博文链接!
Delphi汉字简繁体转换代码(分为D7和D2010版本)的更多相关文章
- 汉字简体繁体转换----Javascript
最近看到有个简体--繁体字互相转换的程序,是用JS实现的,感觉很好玩,所以拿来研究研究.先看看界面如下: 汉字简体繁体转换 // 0&&parent.frames.length) { ...
- Python实现简繁体转换,真的玩得花
大家好鸭, 我是小熊猫 直接开搞!!! 1.opencc-python 首先介绍opencc中的Python实现库,它具有安装简单,翻译准确,使用方便等优点.对于我们日常的需求完全能够胜任. 1.1安 ...
- c# 文件简繁体转换
C# 文件简繁体转换 简繁体转换: 方案一: 准确性高,耗性能 方案二: 准确性低,效率高 1 using Microsoft.International.Converters.Tradition ...
- asp.net简繁体转换
简繁体转换添加Microsoft.VisualBasic.dll引用 //简转繁 string str= Microsoft.VisualBasic.Strings.StrConv("民生银 ...
- 我的Android进阶之旅------>Android中如何高效率的进行简繁体转换
因为APP要做国际化适配,所以就需要顾及到香港和台湾都是使用繁体字,怎样快速便捷高效的把简体字转换成繁体字呢? 说实话我之前用的方法比较呆板,把每个需要转换的字符串进行在线翻译.今天突然发现word或 ...
- 利用js轻松实现页面简繁体转换
使用方法:StranBody(); //转换对象,使用递归,逐层剥到文本 function StranBody(fobj) { if(typeof(fobj)=="object") ...
- C#简繁体转换
/// <summary>/// 字符串简体转繁体/// </summary>/// <param name="strSimple"></ ...
- PHP实现---汉字简体繁体转换
這是以class包裝好的簡繁體轉換的class, 另外需要兩個table檔: 1. http://www.jerry.com.tw/php/big5.map 2. http://www.jerry.c ...
- java代码实现简体繁体转换
汉字分为简体和繁体字,这是众所周知的,虽然繁体字中国大陆这边用的并不会太多,但时不时的还是会使用到.那么,如何做到简体字和繁体字的转换呢?其实很简单,这里附上一个java版本的简繁体转换,用网上找的接 ...
随机推荐
- Python之 七级字典查询
# -*- coding:utf- -*- # 作业要求: # 打印直辖市,省,市,县,区,街道五级菜单: # 可以一层一层地进入到所有层 # 可以退出到上一层 # 可随时退出程序 mapChina ...
- 【BZOJ 3555】 [Ctsc2014]企鹅QQ(哈希)
Description PenguinQQ是中国最大.最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志.群.即时通讯.相册.集市等丰富强大 ...
- 【Codeforces 1107D】Compression
[链接] 我是链接,点我呀:) [题意] 题意 [题解] 先把所给的压缩形式的字符串转成二进制 然后对获得的01数组做一个前缀和(a[i][j]=以(i,j)为右下角,(1,1)为左上角的矩形内的数字 ...
- POJ 1509 循环同构的最小表示法
题目大意: 给定一个字符串,可以把一段尾部接到头部,这样找到一个最小的字符串 方案一: 利用循环同构中找最小表示的方法来解决 论文参考http://wenku.baidu.com/view/438ca ...
- UVALive 4015 树形dp
题目大意: 从一个根节点出发,走最多 x 的长度,问最多能走过多少个节点,图保证是一棵树 dp[0][i][j] , 表示走从i点为根的子树走过了j个点最后回到 i 最少需要多少时间dp[1][i][ ...
- HDU4135容斥原理
#include <cstdio> #include <string.h> #include <cmath> using namespace std; #defin ...
- 亚瑟王(bzoj 4008)
Description 小 K 不慎被 LL 邪教洗脑了,洗脑程度深到他甚至想要从亚瑟王邪教中脱坑. 他决定,在脱坑之前,最后再来打一盘亚瑟王.既然是最后一战,就一定要打得漂 亮.众所周知,亚瑟王是一 ...
- 2016 年末 QBXT 入学测试
P4744 A’s problem(a) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题,每三天结算一次成绩.参与享优惠 描述 这是一道有背 ...
- [Bzoj2039]小Z的袜子 (莫队算法模板题)
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 11866 Solved: 5318[Sub ...
- 清北省选 DAY last 集锦
这是题目描述的链接: http://lifecraft-mc.com/wp-content/uploads/2018/03/problems1.pdf (虽然这次没去清北,但还是厚颜无耻的做了一下这套 ...