N'κόσμε'
est (plus ou moins) équivalent à CAST('κόσμε' AS NVARCHAR2(..))
Avec N'κόσμε'
vous dites "traitez la chaîne comme NVARCHAR". Si vous écrivez simplement 'κόσμε'
alors la chaîne est traitée comme VARCHAR
. Cependant, votre NLS_CHARACTERSET
est WE8ISO8859P15
qui ne prend pas en charge les caractères grecs. Ainsi vous obtenez ?
comme espace réservé.
Vous ne nous avez pas indiqué votre NLS_NCHARACTERSET
paramètre, cela prend très probablement en charge Unicode.
btw, vous n'avez pas à select ... from dual
, écrivez simplement comme
l_ec := ASCIISTR('κόσμε');
en PL/SQL.
Quelle est votre locale NLS_LANG
valeur, c'est-à-dire du côté de votre client ? Il est fort probable qu'il ne corresponde pas au codage de caractères de votre SQL*Plus. Voir cette réponse pour plus de détails :OdbcConnection renvoyant des caractères chinois comme "?"