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.