Can someone please explain why lowercase i in string abcdefghijklmnopqrstuvwxyz is mapped to ? whereas all other alphabets are correctly mapped to corresponding uppercase alphabets.
SQL> ALTER SESSION SET NLS_SORT="xturkish";
Session altered.
SQL>
SQL> begin
2 DBMS_OUTPUT.PUT_LINE('NLS_UPPER(abcdefghijklmnopqrstuvwxyz) = '
3 || NLS_UPPER('abcdefghijklmnopqrstuvwxyz'));
4 end;
5 /
NLS_UPPER(abcdefghijklmnopqrstuvwxyz) = ABCDEFGH?JKLMNOPQRSTUVWXYZ
PL/SQL procedure successfully completed.
SQL>
Update: If nls_sort is set to BINARY, the mapping happens as expected, lowercase i maps to a plane English alphabet I
The capital
iin Turkish isİ(U+0130: Latin Capital Letter I with Dot Above), see https://codepoints.net/U+0130Looks like your Database character set does not support this character, what is your Database character set? Check with
I assume
should work.
You must set your
NLS_LANGand console codepage properly for correct output. Here are some working examples: