O símbolo do euro é sobejamente conhecido mas levanta enormes dores de cabeça quando é necessário transferir a sua representação entre aplicações ou dentro da mesma aplicação quando a representação é guardada num conjuntos de bytes, por exemplo, um ficheiro ou array.

A linguagem JAVA considera todos os caracteres de uma string como pertencendo ao úniverso de codepoints (numa forma simplista um codepoint corresponde a um caracter do código ASCII) da especificação Unicode. No Unicode o símbolo € está atribuído ao codepoint 20AChex que ultrapassa em muito os 255 valores da tabela ASCII ou da tabela que actualmente é mais usada no nosso país o ISO-8859-1. Na prática a tabela ISO-8859-1 corresponde aos primeiros 255 simbolos da Unicode, por isso, se o universo de caracteres usados por uma aplicação corresponder apenas aos símbolos do ISO-8859-1 pode-se representar cada caracter de uma String num único byte. Iste estratagema serve para o os caracteres acentuados, por exemplo, mas não para o símbolo do euro, que não faz parte do alfabeto do ISO-8859-1

Alfabeto do ISO-8859-1

Portanto, quando for necessário gravar uma String contento o símbolo do Euro num conjunto de bytes, deve-se codificar os caracteres usando os métodos oficiais do Unicode: UTF-8, UTF-16, UTF-32 ou recorrendo a alfabetos que contenham os caracteres normal do alfabeto português e o símbolo do euro. Os alfabetos candidatos são: ISO-8859-15 onde o símbolo do euro tem o valor de A4hex (O ISO-8859-15 é uma actualização do ISO-8859-1 onde uns quantos caracteres menos usados foram substituídos por outros que faziam falta como por exemplo o €) ou o CP1252 do windows onde o euro ocupa o lugar de 80hex.

Windows-1252 (CP1252)
x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x NUL
0
SOH
1
STX
2
ETX
3
EOT
4
ENQ
5
ACK
6
BEL
7
BS
8
TAB
9
LF
10
VT
11
FF
12
CR
13
SO
14
SI
15
1x DLE
16
DC1
17
DC2
18
DC3
19
DC4
20
NAK
21
SYN
22
ETB
23
CAN
24
EM
25
SUB
26
ESC
27
FS
28
GS
29
RS
30
US
31
2x SP
32
!
33

34
#
35
$
36
%
37
&
38

39
(
40
)
41
*
42
+
43
,
44
-
45
.
46
/
47
3x 0
48
1
49
2
50
3
51
4
52
5
53
6
54
7
55
8
56
9
57
:
58
;
59
<
60
=
61
>
62
?
63
4x @
64
A
65
B
66
C
67
D
68
E
69
F
70
G
71
H
72
I
73
J
74
K
75
L
76
M
77
N
78
O
79
5x P
80
Q
81
R
82
S
83
T
84
U
85
V
86
W
87
X
88
Y
89
Z
90
[
91
\
92
]
93
^
94
_
95
6x `
96
a
97
b
98
c
99
d
100
e
101
f
102
g
103
h
104
i
105
j
106
k
107
l
108
m
109
n
110
o
111
7x p
112
q
113
r
114
s
115
t
116
u
117
v
118
w
119
x
120
y
121
z
122
{
123
|
124
}
125
~
126
DEL
127
Ax NBSP
160
¡
161
¢
162
£
163
¤
164
¥
165
¦
166
§
167
¨
168
©
169
ª
170
«
171
¬
172
SHY
173
®
174
¯
175
Bx °
176
±
177
²
178
³
179
´
180
µ
181

182
·
183
¸
184
¹
185
º
186
»
187
¼
188
½
189
¾
190
¿
191
Cx À
192
Á
193
Â
194
Ã
195
Ä
196
Å
197
Æ
198
Ç
199
È
200
É
201
Ê
202
Ë
203
Ì
204
Í
205
Î
206
Ï
207
Dx Ð
208
Ñ
209
Ò
210
Ó
211
Ô
212
Õ
213
Ö
214
×
215
Ø
216
Ù
217
Ú
218
Û
219
Ü
220
Ý
221
Þ
222
ß
223
Ex à
224
á
225
â
226
ã
227
ä
228
å
229
æ
230
ç
231
è
232
é
233
ê
234
ë
235
ì
236
í
237
î
238
ï
239
Fx ð
240
ñ
241
ò
242
ó
243
ô
244
õ
245
ö
246
÷
247
ø
248
ù
249
ú
250
û
251
ü
252
ý
253
þ
254
ÿ
255

Tabela do CP1252 (ver original)

Resumindo, o valor de char c = ‘€’ terá o valor de 20AChex no alfabeto do Unicode, nenhum valor em ISO-8859-1 (o java nesta codificação representa-o por um ponto de interrogação ?), A4hex no alfabeto ISO-8859-15 e 80hex no alfabeto CP1252 do windows.