如何区别文本是BIG5还是GB?

jamesw 2000-01-04 02:02:00
加精
IsDBCSLeadByteEx(936, szMailBody[i])
可判断是否是GB,
IsDBCSLeadByteEx(950, szMailBody[i])
可判断是否是BIG5,
但很多情况既是GB又是BIG5,
浏览器或RichWin之类中文平台如何判断的?

VB有
StrConv(string, conversion, LCID)
可在BIG5和GB之间通过Unicode转换,
VC可有相似函数?

非常感谢!
...全文
1027 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tjzhangyan 2001-11-08
  • 打赏
  • 举报
回复
没有办法,gb与big5代码重叠
jamesw 2000-01-04
  • 打赏
  • 举报
回复
据我找到的材料:

GBK范围:
1st byte 2nd byte
0x81~0xfe 0x40~0x7e and 0x80~0xfe

BIG5范围:
1st byte 2nd byte
0x81~0xfe 0x40~0x7e and 0xa1~0xfe

IsDBCSLeadByteEx()函数通过936和950无法准确判断可能此原因
但RichWin之类外挂中文平台如何做到?

主要是转换问题:
一般可通过查表解决,
但在非中文NT上需要GB和BIG5两种ttf字库,
如通过类似VB的strconv()借unicode把BIG5转为GB,
则只需一个字库。
VC中LCMapString()是否作此用处?如何使用?还请指教!

非常感谢!
huzi 2000-01-04
  • 打赏
  • 举报
回复
你好。
BIG5和GB汉字内码都是双字节的,用适当的统计可以区分。
两个系统的头一个字节都是大于0xa0的,如果第二个字节的取值范围在0x40至0xa0之间的内容,则应该是BIG5编码,否则如果全部汉字的第二个字节都是在0xa1至0xfe之间,则为GB编码。
zdg 2000-01-04
  • 打赏
  • 举报
回复
是不是要用到
WideCharToMultiByte和MultiByteToWideChar
来转换呢???
jiangtao 2000-01-04
  • 打赏
  • 举报
回复
如果GB和Big5在一个文本文件,很难分开

GB范围:
1st byte 2nd byte
b0-ff a0-fe

Big5范围:
1st byte 2nd byte
a0-ff 40-7e or >a0

判断方法如下:(转换代码可以问我要)

function isBIG5(value: string): Boolean;
begin
if (length(value)>=2) then
begin
if (value[1] < #161) then
Result := false
else
if ((value[2] >= #64) and (value[2] <= #126)) or ((value[2] >= #161) and (value[2] <= #254)) then
Result := true
else
Result := false
end
else
Result := false
end;

function isGB(value: string): Boolean;
begin
if (length(value)>=2) then
begin
if (value[1] <= #161) and (value[1] >= #247) then
Result := false
else
if (value[2] <= #161) and (value[2] >= #254) then
Result := false
else
Result := true
end
else
Result := true;
end;


16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧