请问谁有好办法计算或是有BIG5码的码表?

时间:2021-03-08 14:44:26
我们现在有个项目,经常要用到按字查找这些繁体字的BIG5码值, 我现在能知道其简体字的国标码,能否算出它的繁体字的BIG5码?

如果不能,兄弟们谁有BIG5码的对照表,让俺能自己查表得到每个字的BIG5编码?

如果办法好,另加二十分!

15 个解决方案

#1


我看到这个,不知道行不行。

[05/12-16:47:24] 
#include <windows.h>
#include <iostream>
#include <tchar.h>

PSTR __fastcall Gb2Big(PSTR sGb); 
PSTR __fastcall Big2Gb(PSTR pszBig5); 

using namespace std; 

int _tmain(int argc, _TCHAR* argv[]) 

        PSTR pszTemp = Gb2Big("aaa"); 

        cout << pszTemp << endl; 
        cout << Big2Gb(pszTemp) << endl; 

        return 0; 


//--------------------------------------------------------------------------- 
//函数输入Gb字符,返回Big5字符 
//--------------------------------------------------------------------------- 
PSTR __fastcall Gb2Big(PSTR pszGbs) 

        PSTR pszGbt            = NULL; //Gb编码的繁体字符 
        PWSTR wszUnicode      = NULL; //Unicode编码的字符 
        PSTR pszBig5          = NULL; //Big5编码的字符 
        PSTR sBig5;                    //返回的字符串 
        int iLen=0;                    //需要转换的字符数 

        //计算转换的字符数 
        iLen=MultiByteToWideChar (936, 0, pszGbs, -1, NULL,0); 

        //给pszGbt分配内存 
        pszGbt=new char[iLen*2+1]; 
        //转换Gb码简体到Gb码繁体,使用API函数LCMapString 
        LCMapString(0x0804, LCMAP_TRADITIONAL_CHINESE, pszGbs, -1, pszGbt, iLen*2); 

        //给wszUnicode分配内存 
        wszUnicode=new wchar_t[iLen+1]; 
        //转换Gb码到Unicode码,使用了API函数MultiByteToWideChar 
        MultiByteToWideChar (936, 0, pszGbt, -1, wszUnicode,iLen); 

        //计算转换的字符数 
        iLen=WideCharToMultiByte (950, 0, wszUnicode, -1, NULL,0, NULL, NULL); 
        //给pszBig5分配内存 
        pszBig5=new char[iLen+1]; 
        //转换Unicode码到Big5码,使用API函数WideCharToMultiByte 
        WideCharToMultiByte (950, 0, wszUnicode, -1, pszBig5,iLen, NULL, NULL); 

        //返回Big5码字符 
        sBig5=pszBig5; 

        //释放内存 
        delete [] wszUnicode; 
        delete [] pszGbt; 

        return pszBig5; 


//--------------------------------------------------------------------------- 
//函数输入Big5字符,返回Gb简体字符 
//--------------------------------------------------------------------------- 
PSTR __fastcall Big2Gb(PSTR pszBig5) 

        PWSTR wszUnicode      = NULL; //Unicode编码的字符 
        PSTR  pszGbt          = NULL; //Gb编码的繁体字符 
        PSTR  pszGbs          = NULL; //Gb编码的简体字符 
        int  iLen            = 0;    //需要转换的字符数 

        //计算转换的字符数 
        iLen=MultiByteToWideChar (950, 0, pszBig5, -1, NULL,0); 
        //给wszUnicode分配内存 
        wszUnicode=new wchar_t[iLen+1]; 
        //转换Big5码到Unicode码,使用了API函数MultiByteToWideChar 
        MultiByteToWideChar (950, 0, pszBig5, -1, wszUnicode,iLen); 

        //计算转换的字符数 
        iLen=WideCharToMultiByte (936, 0, wszUnicode, -1, NULL,0, NULL, NULL); 
        //给pszGbt分配内存 
        pszGbt=new char[iLen+1]; 
        //给pszGbs分配内存 
        pszGbs=new char[iLen+1]; 
        //转换Unicode码到Gb码繁体,使用API函数WideCharToMultiByte 
        WideCharToMultiByte (936, 0, wszUnicode, -1, pszGbt,iLen, NULL, NULL); 

        //转换Gb码繁体到Gb码简体,使用API函数LCMapString 
        LCMapString(0x0804,LCMAP_SIMPLIFIED_CHINESE, pszGbt, -1, pszGbs, iLen); 

        //释放内存 
        delete [] wszUnicode; 
        delete [] pszGbt; 

        return pszGbs; 



#2


楼上, 非常感谢, 但你的算法俺用不上啊:)

俺需要得到的, 就是这个BIG5码的编码值, 不是相应的简体字符:)

也就是说:我需要的是它在BIG5编码表中的纵横坐标:)

#3


印象中简体字和繁体字的码并没有必然的联系和规律,用程序生成的话需要构造一张巨大的对应表。

我现在可以想到的是找一个支持拼音的繁体字输入法(似乎微软拼音可以,但是输出的繁体字好象不是BIG5),然后把你的字写在一个文本里,然后保存查看。

南极星(巨古老的软件)似乎可以做到,你可以找来试试。

这个方法和写程序没什么关系吧~~~

希望大家不要倒我啊~~~

#4


嘿嘿,楼上的方法俺也想过啦,但是:

第一: 俺不需要简体转繁体;也就是说:我输入的时候就会用繁体字输入,只是想有一个BIG5码的坐标表,当然,如果哪位兄弟能有转换工具那与更好:)
第二:俺需要得到的,还是坐标!

俺很急,找不到别的好方法,只好向众兄弟求援了:(

#5


实在不明白你指的坐标是什么?

是指BIG5的二进制码吗?

#6


呵呵,谢谢楼上热心:)

是这样,我们的国标码不也是一张二维表么? BIG5码应该也有一张字符对应表, 我想要的,就是这张表:)

比如说:以下是GBK码表:
      中文 Windows 95 GBK 代码集字符定义表

81 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
4 丂  丄  丅  丆  丏  丒  丗  丟  丠  両  丣  並  丩  丮  丯  丱  
5 丳  丵  丷  丼  乀  乁  乂  乄  乆  乊  乑  乕  乗  乚  乛  乢  
6 乣  乤  乥  乧  乨  乪  乫  乬  乭  乮  乯  乲  乴  乵  乶  乷  
7 乸  乹  乺  乻  乼  乽  乿  亀  亁  亂  亃  亄  亅  亇  亊  
8 亐  亖  亗  亙  亜  亝  亞  亣  亪  亯  亰  亱  亴  亶  亷  亸  
9 亹  亼  亽  亾  仈  仌  仏  仐  仒  仚  仛  仜  仠  仢  仦  仧  
A 仩  仭  仮  仯  仱  仴  仸  仹  仺  仼  仾  伀  伂  伃  伄  伅  ......

我想要的,就是这样一张表,当然是官方定义的:)

#7


这个啊,没准繁体的Windows里有。

#8


http://i18n.linux.org.tw/openi18n/big5/code/
这个有,不过都是图片。

#9


倒,谢谢楼上, 不过有谁能找到一个文本文件形式的啊,不然俺怎么查啊?

现在俺找得眼都花了:(

#10


我有一份 chm 格式的东西,
也列出了楼主需要的编码,
楼主可以留下邮箱,我发给你看看合适否。

#11


谢谢楼上,俺的邮箱为:
feibob@163.com 非常感谢!

#12


已发送,但过程似乎不太顺利,请查收一下吧

#13


楼上, 没有收到啊,能不能重发一下?谢谢!

#14


发了,显示成功,再查收一次吧。

#15


俺已经收到了,非常感谢楼上, 也感谢各位兄弟的积极帮助!

结贴!~

#1


我看到这个,不知道行不行。

[05/12-16:47:24] 
#include <windows.h>
#include <iostream>
#include <tchar.h>

PSTR __fastcall Gb2Big(PSTR sGb); 
PSTR __fastcall Big2Gb(PSTR pszBig5); 

using namespace std; 

int _tmain(int argc, _TCHAR* argv[]) 

        PSTR pszTemp = Gb2Big("aaa"); 

        cout << pszTemp << endl; 
        cout << Big2Gb(pszTemp) << endl; 

        return 0; 


//--------------------------------------------------------------------------- 
//函数输入Gb字符,返回Big5字符 
//--------------------------------------------------------------------------- 
PSTR __fastcall Gb2Big(PSTR pszGbs) 

        PSTR pszGbt            = NULL; //Gb编码的繁体字符 
        PWSTR wszUnicode      = NULL; //Unicode编码的字符 
        PSTR pszBig5          = NULL; //Big5编码的字符 
        PSTR sBig5;                    //返回的字符串 
        int iLen=0;                    //需要转换的字符数 

        //计算转换的字符数 
        iLen=MultiByteToWideChar (936, 0, pszGbs, -1, NULL,0); 

        //给pszGbt分配内存 
        pszGbt=new char[iLen*2+1]; 
        //转换Gb码简体到Gb码繁体,使用API函数LCMapString 
        LCMapString(0x0804, LCMAP_TRADITIONAL_CHINESE, pszGbs, -1, pszGbt, iLen*2); 

        //给wszUnicode分配内存 
        wszUnicode=new wchar_t[iLen+1]; 
        //转换Gb码到Unicode码,使用了API函数MultiByteToWideChar 
        MultiByteToWideChar (936, 0, pszGbt, -1, wszUnicode,iLen); 

        //计算转换的字符数 
        iLen=WideCharToMultiByte (950, 0, wszUnicode, -1, NULL,0, NULL, NULL); 
        //给pszBig5分配内存 
        pszBig5=new char[iLen+1]; 
        //转换Unicode码到Big5码,使用API函数WideCharToMultiByte 
        WideCharToMultiByte (950, 0, wszUnicode, -1, pszBig5,iLen, NULL, NULL); 

        //返回Big5码字符 
        sBig5=pszBig5; 

        //释放内存 
        delete [] wszUnicode; 
        delete [] pszGbt; 

        return pszBig5; 


//--------------------------------------------------------------------------- 
//函数输入Big5字符,返回Gb简体字符 
//--------------------------------------------------------------------------- 
PSTR __fastcall Big2Gb(PSTR pszBig5) 

        PWSTR wszUnicode      = NULL; //Unicode编码的字符 
        PSTR  pszGbt          = NULL; //Gb编码的繁体字符 
        PSTR  pszGbs          = NULL; //Gb编码的简体字符 
        int  iLen            = 0;    //需要转换的字符数 

        //计算转换的字符数 
        iLen=MultiByteToWideChar (950, 0, pszBig5, -1, NULL,0); 
        //给wszUnicode分配内存 
        wszUnicode=new wchar_t[iLen+1]; 
        //转换Big5码到Unicode码,使用了API函数MultiByteToWideChar 
        MultiByteToWideChar (950, 0, pszBig5, -1, wszUnicode,iLen); 

        //计算转换的字符数 
        iLen=WideCharToMultiByte (936, 0, wszUnicode, -1, NULL,0, NULL, NULL); 
        //给pszGbt分配内存 
        pszGbt=new char[iLen+1]; 
        //给pszGbs分配内存 
        pszGbs=new char[iLen+1]; 
        //转换Unicode码到Gb码繁体,使用API函数WideCharToMultiByte 
        WideCharToMultiByte (936, 0, wszUnicode, -1, pszGbt,iLen, NULL, NULL); 

        //转换Gb码繁体到Gb码简体,使用API函数LCMapString 
        LCMapString(0x0804,LCMAP_SIMPLIFIED_CHINESE, pszGbt, -1, pszGbs, iLen); 

        //释放内存 
        delete [] wszUnicode; 
        delete [] pszGbt; 

        return pszGbs; 



#2


楼上, 非常感谢, 但你的算法俺用不上啊:)

俺需要得到的, 就是这个BIG5码的编码值, 不是相应的简体字符:)

也就是说:我需要的是它在BIG5编码表中的纵横坐标:)

#3


印象中简体字和繁体字的码并没有必然的联系和规律,用程序生成的话需要构造一张巨大的对应表。

我现在可以想到的是找一个支持拼音的繁体字输入法(似乎微软拼音可以,但是输出的繁体字好象不是BIG5),然后把你的字写在一个文本里,然后保存查看。

南极星(巨古老的软件)似乎可以做到,你可以找来试试。

这个方法和写程序没什么关系吧~~~

希望大家不要倒我啊~~~

#4


嘿嘿,楼上的方法俺也想过啦,但是:

第一: 俺不需要简体转繁体;也就是说:我输入的时候就会用繁体字输入,只是想有一个BIG5码的坐标表,当然,如果哪位兄弟能有转换工具那与更好:)
第二:俺需要得到的,还是坐标!

俺很急,找不到别的好方法,只好向众兄弟求援了:(

#5


实在不明白你指的坐标是什么?

是指BIG5的二进制码吗?

#6


呵呵,谢谢楼上热心:)

是这样,我们的国标码不也是一张二维表么? BIG5码应该也有一张字符对应表, 我想要的,就是这张表:)

比如说:以下是GBK码表:
      中文 Windows 95 GBK 代码集字符定义表

81 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
4 丂  丄  丅  丆  丏  丒  丗  丟  丠  両  丣  並  丩  丮  丯  丱  
5 丳  丵  丷  丼  乀  乁  乂  乄  乆  乊  乑  乕  乗  乚  乛  乢  
6 乣  乤  乥  乧  乨  乪  乫  乬  乭  乮  乯  乲  乴  乵  乶  乷  
7 乸  乹  乺  乻  乼  乽  乿  亀  亁  亂  亃  亄  亅  亇  亊  
8 亐  亖  亗  亙  亜  亝  亞  亣  亪  亯  亰  亱  亴  亶  亷  亸  
9 亹  亼  亽  亾  仈  仌  仏  仐  仒  仚  仛  仜  仠  仢  仦  仧  
A 仩  仭  仮  仯  仱  仴  仸  仹  仺  仼  仾  伀  伂  伃  伄  伅  ......

我想要的,就是这样一张表,当然是官方定义的:)

#7


这个啊,没准繁体的Windows里有。

#8


http://i18n.linux.org.tw/openi18n/big5/code/
这个有,不过都是图片。

#9


倒,谢谢楼上, 不过有谁能找到一个文本文件形式的啊,不然俺怎么查啊?

现在俺找得眼都花了:(

#10


我有一份 chm 格式的东西,
也列出了楼主需要的编码,
楼主可以留下邮箱,我发给你看看合适否。

#11


谢谢楼上,俺的邮箱为:
feibob@163.com 非常感谢!

#12


已发送,但过程似乎不太顺利,请查收一下吧

#13


楼上, 没有收到啊,能不能重发一下?谢谢!

#14


发了,显示成功,再查收一次吧。

#15


俺已经收到了,非常感谢楼上, 也感谢各位兄弟的积极帮助!

结贴!~