File Encoding in ASC II

0

I'm developing an application in php that generates batch files for the bank and these files have to be with the specifications below:

  

Coding System - Low Platform

     

ASC II - including the file should contain record delimiters at the end of each record,   (ODOA), as well as file finalizer, at the end of the trailler, (1A).

This excerpt is from the bradesco manual, and I do not know if I understood it very well. From what I could understand the shipping files have to be encoded in ASC II and how do I do this? I searched the php manual and found a function that can encode strings for ASC II, it's called "mb_convert_encoding ()" would that be the path?

And these end-of-line delimiters (line) would be the line breaks?

The file finalizer (1A) that the manual quoted would be what the fclose () function places at the end of the file?

    
asked by anonymous 28.03.2018 / 02:26

2 answers

1

The characters should contain ASCII 7-bit default codes (0 to 127, that is UNICODE or other accent or symbol encoding) end of each record / line one you will include the characters 13 and 10 (when you mount the string to write to the file put a ."\r\n"; at the end of the file, before fclose() , send a chr(0x1a); . I recommend you use the fwrite() function and work with the file in binary format ("wb").

    
28.03.2018 / 03:13
4

The spelling is "ASCII". Abbreviation for "American Standard Code for Information Interchange," which is "American Standard Code for Information Exchange."

In principle, there is nothing to convert. The most common encodings, whether ISO-8859-1, WIN-1252, or even UTF-8, use the ASCII table as the basis.

ASCII are the characters from 0 to 127, as shown in the following table:

Caracteres "imprimíveis"
=======================================
Dec    Hex   Bin         Caractere
------ ----- ----------- --------------
 32    20    00100000    Espaço
 33    21    00100001    ! 
 34    22    00100010    " 
 35    23    00100011    # 
 36    24    00100100    $ 
 37    25    00100101    % 
 38    26    00100110    & 
 39    27    00100111    ' 
 40    28    00101000    ( 
 41    29    00101001    ) 
 42    2A    00101010    * 
 43    2B    00101011    + 
 44    2C    00101100    , 
 45    2D    00101101    - 
 46    2E    00101110    . 
 47    2F    00101111    / 
 48    30    00110000    0 
 49    31    00110001    1 
 50    32    00110010    2 
 51    33    00110011    3 
 52    34    00110100    4 
 53    35    00110101    5 
 54    36    00110110    6 
 55    37    00110111    7 
 56    38    00111000    8 
 57    39    00111001    9 
 58    3A    00111010    : 
 59    3B    00111011    ; 
 60    3C    00111100    < 
 61    3D    00111101    = 
 62    3E    00111110    > 
 63    3F    00111111    ? 
 64    40    01000000    @ 
 65    41    01000001    A 
 66    42    01000010    B 
 67    43    01000011    C 
 68    44    01000100    D 
 69    45    01000101    E 
 70    46    01000110    F 
 71    47    01000111    G 
 72    48    01001000    H 
 73    49    01001001    I 
 74    4A    01001010    J 
 75    4B    01001011    K 
 76    4C    01001100    L 
 77    4D    01001101    M 
 78    4E    01001110    N 
 79    4F    01001111    O 
 80    50    01010000    P 
 81    51    01010001    Q 
 82    52    01010010    R 
 83    53    01010011    S 
 84    54    01010100    T 
 85    55    01010101    U 
 86    56    01010110    V 
 87    57    01010111    W 
 88    58    01011000    X 
 89    59    01011001    Y 
 90    5A    01011010    Z 
 91    5B    01011011    [ 
 92    5C    01011100    \ 
 93    5D    01011101    ] 
 94    5E    01011110    ^ 
 95    5F    01011111    _ 
 96    60    01100000    ' 
 97    61    01100001    a 
 98    62    01100010    b 
 99    63    01100011    c 
100    64    01100100    d
101    65    01100101    e
102    66    01100110    f
103    67    01100111    g
104    68    01101000    h
105    69    01101001    i
106    6A    01101010    j
107    6B    01101011    k
108    6C    01101100    l
109    6D    01101101    m
110    6E    01101110    n
111    6F    01101111    o
112    70    01110000    p
113    71    01110001    q
114    72    01110010    r
115    73    01110011    s
116    74    01110100    t
117    75    01110101    u
118    76    01110110    v
119    77    01110111    w
120    78    01111000    x
121    79    01111001    y
122    7A    01111010    z
123    7B    01111011    {
124    7C    01111100    |
125    7D    01111101    }
126    7E    01111110    ~
127    7F    01111111    DEL

And this:

Caracteres de controle
=======================================
Dec    Hex   Bin         Caractere
------ ----- ----------- --------------
 10    0A    00001010    avanço de linha
 13    0D    00001101    retorno de carro
 26    1A    00011010    SUB
 (tem outros, que nao vem ao caso agora)

Just filter the string to eliminate accents and special characters, so you do not have any outside the table above. How to do it, it just depends on the way it is generating each line.

To insert the characters 0x0D , 0x0A into PHP, this is enough:

$quebra = chr( 0x0D ) . chr( 0x0A );

$final = chr( 0x1A );

PS: As already mentioned, you can use "\ r \ n", but it looks exactly the same, see IDEONE .

There you go, making the line:

$arquivo .= $linha . $quebra;

and at the end

$arquivo .= $final;

Example taken from actual bank shipping, but with its added 0x1A (in the original I did not need this, and I separated the variables to illustrate):

$quebra = chr( 0x0D ) . chr( 0x0A );
$final = chr( 0x1A );
$cRemessa := ''
... pulei a maior parte das linhas, mas só muda o conteudo ...
$cRemessa .= '1040001300021R 01000000000000000000000000000000000000000000000000204042018000000000000200                                                                                                                                                       ' + $quebra;
$cRemessa .= '10400015         000023000007000000000009002100000000000000000000000000000000000000000000000                                                                                                                                                    ' + $quebra;
$cRemessa .= '10499999         000001000025                                                                                                                                                                                                                   ' + $quebra;
$cRemessa .= $final;

Remember to scroll to the far right, because the string has many blanks.

    
28.03.2018 / 02:52