Hi Alvaro,
yeah, in Oracle, if your database character set is UTF8, some non-ASCII characters will be stored in 2 or more bytes. So if you have a PL/SQL variable defined as CHAR(40), you only have 40 bytes available, not 40 characters. The solution to this in PL/SQL is to declare all your variables as CHAR(40 CHAR) instead of simply CHAR(40). Same for VARCHAR2.
Docs here:
http://68.142.116.68/docs/cd/B19306_01/server.102/b14200/sql_elements001.htm#i45647
hope this helps
Brian