免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 15967 | 回复: 11
打印 上一主题 下一主题

关于EBCDIC转GBK的算法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-17 21:43 |只看该作者 |倒序浏览
    现在系统中在对EBCDIC转GBK的时候,只对GBK2和GBK3区通过算法进行转化了,但是GBK4并没有进行处理,所以现在出现了乱码现象。
    查好好多资料都没有查到处理方法,请大牛们指导。
     

    后来考虑2肿方案:
    方案1:对于GBK4编码区的写算法进行转化。

    方案2:放弃原来的解码方式,换一种新的解码方式,


网上基本上都是说 EBCDIC和GBK转化码表--GBK_CVT.txt,但是自己不会生成,网上也没下载的,知道的发我邮箱:hua6205@163.com  
谢谢!  

论坛徽章:
0
2 [报告]
发表于 2013-10-17 22:53 |只看该作者
自己顶自己一下,怎么没人回答呢

论坛徽章:
0
3 [报告]
发表于 2013-10-17 22:54 |只看该作者
如果找个中间码作为过渡,选那个? ascii  utf-8?

论坛徽章:
0
4 [报告]
发表于 2013-10-18 10:03 |只看该作者
回复 2# hua6205


    坐等啊

论坛徽章:
0
5 [报告]
发表于 2013-10-18 16:18 |只看该作者
如果你们的公司肯支付费用购买我们的软件一切的转码都没有问题。

论坛徽章:
0
6 [报告]
发表于 2013-10-20 13:53 |只看该作者
GBK汉字编码区间:
        ASCII(长方块)         EBCDIC
        ------------------      -------------------------
GBK/3:  8140 - A0FE             8141 - A181
UDC/3:  A140 - A7A0             7CA0 - 804E
GBK/5:  A840 - A995             425F - 44EC , CD41 - CDD5      查表
GBK/1:  A1A1 , A1A2 - A9FE      4040 , 4141 - 4753             查表
UDC/1:  AAA1 - AFFE             7641 - 78FD
GBK/2:  B0A1 - F7FE             48A0 - 6C9F
GBK/4:  AA40 - FD9B             A182 - CC67
        FD9C - FEA0             CE41 - CEA6
UDC/2:  F8A1 - FEFE             7941 - 7C9F

GBK ASCII码第1字节范围为81-FE
GBK ASCII码第2字节不能为7F,范围为40-FE
GBK ASCII码区间中未定义汉字或符号的部分编码转换为EBCDIC编码时全转为 FEFE

GBK EBCDIC汉字编码区间:
    4040, 4141-CEA6,除4040外,高字节:41-CE,低字节:41-FD(为80的仅4180,4680)
   GBK/1: 4040, 4141-4753
   GBK/2: 48A0-6C9F(低字节:41-FD,!=80),无5C9B-5C9F
   GBK/3: 8141-A181
   GBK/4: A182-CC67,CE41-CEA6
   GBK/5: 425F-44EC,CD41-CDD5
   UDC/1: 7641-78FD
   UDC/2: 7941-7C9F
   UDC/3: 7CA0-804E

论坛徽章:
0
7 [报告]
发表于 2013-10-20 13:54 |只看该作者
方块转换公式:
假设ASCII码是如下的方块:(从X1Y1到X2Y2,其中Y不等于7F)
      Y1   Y0              7F                              Y2
   X1 +----*---------------|-------------------------------+ X1
      |                    |                               |
      |          (X,Y)     |                               |
      |                    |                               |
      |                    |                               |
   X2 +--------------------|-------------------------------+ X2
      Y1                   7F                              Y2
对应EBCDIC码是如下的方块:(从E1B1到E2B2)
       B1   B0              80                            B2
    E1 +----*---------------|-----------------------------+ E1
       |                    |                             |
       |          (E,B)     |                             |
       |                    |                             |
       |                    |                             |
    E2 +--------------------|-----------------------------+ E2
       B1                   80                            B2
该区第一个汉字ASCII的X1Y0对应EBCDIC的E1B0,ASCII的(X,Y)对应EBCDIC的(E,B),
如果都是线性对应,那么(X,Y)到(X1,Y0)的距离应等于(E,B)到(E1,B0)的距离(即方
块内相距的汉字个数)

论坛徽章:
0
8 [报告]
发表于 2013-10-20 13:54 |只看该作者
本帖最后由 ux400 于 2013-10-20 13:56 编辑

USGS Rectangle_A2E(USGS X1Y1, USGS X2Y2, USGC Y0,
                   USGS E1B1, USGS E2B2, USGC B0,
                   USGS XY)
{
......
}

USGS Rectangle_E2A(USGS E1B1, USGS E2B2, USGC B0,
                   USGS X1Y1, USGS X2Y2, USGC Y0,
                   USGS EB)
{
......
}


USGS GBK_E2A_v3(USGS EBCDIC_Code)
{
......
  else if(HB_E >= 0xA1 && LB_E >= 0x41 &&
          HB_E <= 0xCC && LB_E <= 0xFD &&
          EBCDIC_Code <= 0xCC67)          /* GBK/4 */
    GB = Rectangle_E2A(0xA141, 0xCCFD, 0x82, 0xAA40, 0xFDA0, 0x40, EBCDIC_Code);
......
}

论坛徽章:
0
9 [报告]
发表于 2013-10-21 08:35 |只看该作者
回复 7# ux400


ASCII  不能表示所有的汉字吧,还是又点看不懂


   

论坛徽章:
0
10 [报告]
发表于 2013-10-21 08:47 |只看该作者
能帮忙写个详细的案例吗? 比较急,没时间研究了,谢谢!回复 8# ux400


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP