Professional Web Applications Themes

Manipulating files with non-ASCII characters - Coldfusion - Advanced Techniques

Hi, all. I am in need to download a file from an MVS mainframe via FTP, open it, replace a few text characters, and put it back on the mainframe. The issue is, the file contains non-ASCII characters. The method I tried was to use CFFTP binary download option and convert it to Base64 on my ColdFusion server (6.1MX). I then converted the strings I want to search and replace on the file to Base64, and did a find and replace on the converted file. Needless to say, it did not work (could not find the strings to replace). Do ...

  1. #1

    Default Manipulating files with non-ASCII characters

    Hi, all.

    I am in need to download a file from an MVS mainframe via FTP, open it,
    replace a few text characters, and put it back on the mainframe.

    The issue is, the file contains non-ASCII characters.

    The method I tried was to use CFFTP binary download option and convert it to
    Base64 on my ColdFusion server (6.1MX).
    I then converted the strings I want to search and replace on the file to
    Base64, and did a find and replace on the converted file.

    Needless to say, it did not work (could not find the strings to replace). Do I
    need to put the base64 converted file into an array, and then do the search and
    replace on all rows? If so, how?

    Thank you for any suggestions.

    Mauricio

    Frustated Guest

  2. #2

    Default Re: Manipulating files with non-ASCII characters

    Frustated wrote: 

    what encoding?
    PaulH Guest

  3. #3

    Default Re: Manipulating files with non-ASCII characters

    EBCDIC.

    Thank you.
    Frustated Guest

  4. #4

    Default Re: Manipulating files with non-ASCII characters

    Frustated wrote: 

    oh my. unfortunately there are literally dozens of EBCDIC flavors though
    might not matter in your case depending on what you need to change. have
    you just tried US-ASCII encoding (cht option) w/cffile & adjusting
    for the different codepoints? if not, do you have an example i can look at?
    PaulH Guest

  5. #5

    Default Re: Manipulating files with non-ASCII characters

    assuming it's plain jane US EBCDIC, see if this shortcuts things.

    <cfscript>
    /*
    adapted from http://www.eggheadcafe.com/articles/20020426.asp
    original code by: Peter A. Bromberg, Ph.D.
    */
    ////////////////////////////////////////////////////////////////
    function EBCDICtoASCII(EBCDICString) {
    var
    e2a=listToArray("1,2,3,156,9,134,127,151,141,142,1 1,12,13,14,15,16,17,18,19,157,
    133,8,135,24,25,146,143,28,29,30,31,128,129,130,13 1,132,10,23,27,136,137,138,139
    ,140,5,6,7,144,145,22,147,148,149,150,4,152,153,15 4,155,20,21,158,26,32,160,161,
    162,163,164,165,166,167,168,91,46,60,40,43,33,38,1 69,170,171,172,173,174,175,176
    ,177,93,36,42,41,59,94,45,47,178,179,180,181,182,1 83,184,185,124,44,37,95,62,63,
    186,187,188,189,190,191,192,193,194,96,58,35,64,39 ,61,34,195,97,98,99,100,101,10
    2,103,104,105,196,197,198,199,200,201,202,106,107, 108,109,110,111,112,113,114,20
    3,204,205,206,207,208,209,126,115,116,117,118,119, 120,121,122,210,211,212,213,21
    4,215,216,217,218,219,220,221,222,223,224,225,226, 227,228,229,230,231,123,65,66,
    67,68,69,70,71,72,73,232,233,234,235,236,237,125,7 4,75,76,77,78,79,80,81,82,238,
    239,240,241,242,243,92,159,83,84,85,86,87,88,89,90 ,244,245,246,247,248,249,48,49
    ,50,51,52,53,54,55,56,57,250,251,252,253,254,255") ;
    var sb=createObject("java","java.lang.StringBuffer");
    var i=0;
    for (i=1; i LTE arguments.EBCDICString.length(); i=i+1) {
    sb.append(chr(e2a[asc(mid(arguments.EBCDICString,i,1))]));
    }
    return sb.toString();
    }

    ////////////////////////////////////////////////////////////////
    function ASCIItoEBCDIC(ASCIIString) {
    var
    a2e=listToArray("1,2,3,55,45,46,47,22,5,37,11,12,1 3,14,15,16,17,18,19,60,61,50,3
    8,24,25,63,39,28,29,30,31,64,79,127,123,91,108,80, 125,77,93,92,78,107,96,75,97,2
    40,241,242,243,244,245,246,247,248,249,122,94,76,1 26,110,111,124,193,194,195,196
    ,197,198,199,200,201,209,210,211,212,213,214,215,2 16,217,226,227,228,229,230,231
    ,232,233,74,224,90,95,109,121,129,130,131,132,133, 134,135,136,137,145,146,147,14
    8,149,150,151,152,153,162,163,164,165,166,167,168, 169,192,106,208,161,7,32,33,34
    ,35,36,21,6,23,40,41,42,43,44,9,10,27,48,49,26,51, 52,53,54,8,56,57,58,59,4,20,62
    ,225,65,66,67,68,69,70,71,72,73,81,82,83,84,85,86, 87,88,89,98,99,100,101,102,103
    ,104,105,112,113,114,115,116,117,118,119,120,128,1 38,139,140,141,142,143,144,154
    ,155,156,157,158,159,160,170,171,172,173,174,175,1 76,177,178,179,180,181,182,183
    ,184,185,186,187,188,189,190,191,202,203,204,205,2 06,207,218,219,220,221,222,223
    ,234,235,236,237,238,239,250,251,252,253,254,255") ;
    var t=arguments.ASCIIString.getBytes("US-ASCII");
    var sb=createObject("java","java.lang.StringBuffer");
    var i=0;
    for (i=1; i LTE arrayLen(t); i=i+1) {
    sb.append(chr(a2e[t[i]]));
    }
    return sb.toString();
    }
    ////////////////////////////////////////////////////////////////
    e=ASCIItoEBCDIC('Help');
    a=EBCDICtoASCII(e);
    writeoutput("<b>EBCDIC</b>: #e# ::: #len(e)#<br><b>ASCII</b>: #a# :::
    #len(a)#<br>");
    </cfscript>

    PaulH Guest

Similar Threads

  1. [PHP] Formatting an ascii characters in php?
    By Jay Blanchard in forum PHP Development
    Replies: 1
    Last Post: August 8th, 07:41 PM
  2. Formatting an ascii characters in php?
    By Scott Fletcher in forum PHP Development
    Replies: 0
    Last Post: August 8th, 07:22 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139