中文转码器的工作原理

wanglan1388

wanglan1388

2016-02-19 12:46

有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享中文转码器的工作原理吧。

  最近在做Delphi下的简体与繁体转换, 发现Windows2000自带的工具"中文转码器"很好用, 不仅可以转内码(BIG5--GBK), 还可以将繁体字转为简体字(如:東--东).

  要转内码比较简单, 使用MultiByteToWideChar先将简体/繁体(GBK/BIG5)转为UniCode, 再使用WideCharToMultiByte从Unicode转为繁体/简体(BIG5/GBK).

EX:function Big52GB( ABig5String: string): String;{ BIG5 to GBK : BIG5 == Unicode == GBK }Var  mWString: array[0..1024] of WideChar;  cchWideChar: Integer;  mLongBool: LongBool;begin  Result := ABig5String;//分配空间  mLongBool := True;  //1.先取得需要的长度  cchWideChar := MultiByteToWideChar(950, 0, PChar(ABig5String), length(ABig5String), @mWString, 0);//  SetLength(mWString, cchWideChar+1);  //2.BIG5 to Unicode  MultiByteToWideChar(950, 0, PChar(ABig5String), length(ABig5String), @mWString, cchWideChar);  //3.Unicode to GBK  WideCharToMultiByte(936, 0, @mWString, cchWideChar, PChar(Result), length(Result), '?', @mLongBool);end;

  经过以上步骤, 就可以把BIG5码转为GBK码,但是繁体中的字因为在GBK中大部分都有对应(繁体字形),因而,以上得到的是BIG5对应的繁体字形,如BIG5码的 “東”($AA46)得到的GBK对应的字为“東”($967C),而不是简体中最常用的“东”($B6AB)。

   在中文转码器中,最后一页提供了是否转字形的选项,它可以做到!那我们也应该可以做到!经过调试,原来它是调用LCMapStringW!

  在Windows.pas中,定义了三个这样的函数:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  function LCMapString(Locale: LCID; dwMapFlags: DWORD; lpSrcStr: PChar;
    cchSrc: Integer; lpDestStr: PChar; cchDest: Integer): Integer; stdcall;

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  function LCMapStringA(Locale: LCID; dwMapFlags: DWORD; lpSrcStr: PAnsiChar;
    cchSrc: Integer; lpDestStr: PAnsiChar; cchDest: Integer): Integer; stdcall;

  function LCMapStringW(Locale: LCID; dwMapFlags: DWORD; lpSrcStr: PWideChar;
    cchSrc: Integer; lpDestStr: PWideChar; cchDest: Integer): Integer; stdcall;

  其中,LCMapString=LCMapStringA,也就是使用ASCII的,当然我们也可以使用LCMapStringW转UniCode成为简体字形。

展开更多 50%)
分享

猜你喜欢

中文转码器的工作原理

编程语言 网络编程
中文转码器的工作原理

DNS服务器工作原理

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
DNS服务器工作原理

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

稳压器的工作原理-稳压器的简介

生活常识
稳压器的工作原理-稳压器的简介

断路器的工作原理-断路器的选择

生活常识
断路器的工作原理-断路器的选择

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

净水器的工作原理 净水器的选购技巧

净水器 健康 健康饮食
净水器的工作原理    净水器的选购技巧

稳压器的分类 稳压器的工作原理介绍

装修设计 家居装修 装修材料
稳压器的分类 稳压器的工作原理介绍

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Win10正式版中文输入不了怎么办?

Win10正式版中文输入不了怎么办?

X/HTML5 和 XHTML2

X/HTML5 和 XHTML2
下拉加载更多内容 ↓