Wednesday, March 11, 2009

Difference between WE8ISO8859P1 and WE8ISO8859P15 characterset

The lists of characters along with their code points used in oracle database character set WE8ISO8859P1 is defined in the

And the lists of characters along with their code points used in oracle database character set WE8ISO8859P15 is defined in the

The oracle database character set WE8ISO8859P15 differs from WE8ISO8859P1 in a few positions only.

In the oracle database character set WE8ISO8859P15 the euro sign and some national letters used in French and Finnish have been introduced and some rarely used special characters omitted that was exist in WE8ISO8859P1.

Below is the lists of WE8ISO8859P1 and WE8ISO8859P15 character sets that differ by code position only.

Code | WE8ISO8859P1 (ISO Latin 1) | WE8ISO8859P15 (ISO Latin 9)
in | |
hex | name | name

A4 | general currency symbol(¤) | euro sign (€)
| |
A6 | broken vertical bar (¦) | latin capital letter s with caron (Š)
| |
A8 | umlaut (diaeresis) accent(¨)| latin small letter s with caron (š)
| |
B4 | acute accent (´) | latin capital letter z with caron (Ž)
| |
B8 | cedilla (¸) | latin small letter z with caron (ž)
| |
BC | one fourth (one quarter) (¼)| latin capital ligature oe (Œ)
| |
BD | one half (½) | latin small ligature oe (œ)
| |
BE | three quarters (¾) | latin capital letter y with diaeresis (Ÿ)

Except the above characters and the characters that are undefined, rest of the characters in WE8ISO8859P15 has the same code point in WE8ISO8859P1.

Note that in both WE8ISO8859P15 and WE8ISO8859P1 the code points from 0x80 to 0x9F are undefined. So whenever you want to find different between these two the undefined characters also appear in the list.

SQL>set serveroutput on
i number;
for i in 0..255 loop
ch varchar2(1);
ch := chr(i);
if convert( ch, 'WE8ISO8859P1', 'WE8ISO8859P15') != ch
dbms_output.put_line('Difference- Decimal:'|| i ||' Hexa:'|| to_char(i,'XXXX'));
end if;
end loop;

Difference- Decimal:128 Hexa: 80
Difference- Decimal:129 Hexa: 81
Difference- Decimal:130 Hexa: 82
Difference- Decimal:131 Hexa: 83
Difference- Decimal:132 Hexa: 84
Difference- Decimal:133 Hexa: 85
Difference- Decimal:134 Hexa: 86
Difference- Decimal:135 Hexa: 87
Difference- Decimal:136 Hexa: 88
Difference- Decimal:137 Hexa: 89
Difference- Decimal:138 Hexa: 8A
Difference- Decimal:139 Hexa: 8B
Difference- Decimal:140 Hexa: 8C
Difference- Decimal:141 Hexa: 8D
Difference- Decimal:142 Hexa: 8E
Difference- Decimal:143 Hexa: 8F
Difference- Decimal:144 Hexa: 90
Difference- Decimal:145 Hexa: 91
Difference- Decimal:146 Hexa: 92
Difference- Decimal:147 Hexa: 93
Difference- Decimal:148 Hexa: 94
Difference- Decimal:149 Hexa: 95
Difference- Decimal:150 Hexa: 96
Difference- Decimal:151 Hexa: 97
Difference- Decimal:152 Hexa: 98
Difference- Decimal:153 Hexa: 99
Difference- Decimal:154 Hexa: 9A
Difference- Decimal:155 Hexa: 9B
Difference- Decimal:156 Hexa: 9C
Difference- Decimal:157 Hexa: 9D
Difference- Decimal:158 Hexa: 9E
Difference- Decimal:159 Hexa: 9F
Difference- Decimal:164 Hexa: A4
Difference- Decimal:166 Hexa: A6
Difference- Decimal:168 Hexa: A8
Difference- Decimal:180 Hexa: B4
Difference- Decimal:184 Hexa: B8
Difference- Decimal:188 Hexa: BC
Difference- Decimal:189 Hexa: BD
Difference- Decimal:190 Hexa: BE

PL/SQL procedure successfully completed.

In both character set from 0x80 to 0x9F all the code points are undefined. And the rest 8 characters are different between the two.

Also the WE8ISO8859P1 and WE8ISO8859P15 character sets are not binary super sets of each other.
Related Documents
Difference between WE8MSWIN1252 and WE8ISO8859P15 characterset
Difference between WE8ISO8859P1 and WE8MSWIN1252 characterset
CSSCAN fails with CSS-00151: failed to enumerate user tables CSS-00120

CSSCAN fails with error while loading shared libraries:

How to run csscan in the background as a sysdba

CSSCAN fails with CSS-00107: Character set migration utility schema not installed
ORA-00904: "CNVTYPE" CSS-08888: failed to update conversion type
CSSCAN fails with ORA-00600, CSS-00152, CSS-00120

No comments: