Styleguide für Powerpoint-Präsentationen

Werbung
DOAG Konferenz + Ausstellung
18.11.2014 Nürnberg
Character Set & Globalization
Martin Hoermann
[email protected]
www.ordix.de
Character Set & Globalization
„Das Alpha und das Omega,
der Erste und der Letzte,
der Anfang und das Ende “
Offenbarung des Johannes (Kap. 22,13)
Character Set und Globalization, Martin Hoermann, DOAG 2014
1
Gut zu wissen…
http://www.interessante.verweise/
FAQ: 340512.1 Timestamp
Details …
Infos
zum Nachschlagen
Literatur
http://www.buch.de
Wo ist Larry?
Character Set und Globalization, Martin Hoermann, DOAG 2014
2
Character Sets
U+2318
place of interest
http://www.fileformat.info/
Character Set und Globalization, Martin Hoermann, DOAG 2014
3
Character Set
Encoding (ISO/IEC 8859-1)
Hermes Baby: http://www.typewriters.ch/images/hermes_baby_jubilee_gr.jpg
Character Set und Globalization, Martin Hoermann, DOAG 2014
4
Wichtige Character Sets / Encodings
Oracle Pendant

ISO 8859-1

WE8ISO8859P1

ISO 8859-15

WE8ISO8859P15

CP 1252

WE8MSWIN1252

CP 850

UTF-8

UTF8 / AL32UTF8

UTF-16

AL16UTF16
Oracle Äquivalent
Character Set und Globalization, Martin Hoermann, DOAG 2014
5
Character Set & Oracle
Betriebssystem
Programme
Editoren
Fonts
NLS_LANG
Transfer
Character-SetDatenbank
Betriebssystem
Programme
Editoren
NLS_LANG
Character Set und Globalization, Martin Hoermann, DOAG 2014
6
NLS_LANG
NLS_LANG = GERMAN __ GERMANY . WE8ISO8859P1
Character Set (Client)
Territory (Client + Datenbank)
Date format
Decimal character and group separator
Local currency symbol
ISO currency symbol
Dual currency symbol
First day of the week
Credit and debit symbols
ISO week flag
List separator
Language (Client + Datenbank)
Language for server messages
Language for day and month names and their abbreviations
Symbols for equivalents of AM, PM, AD, and BC.
Default sorting sequence for character data
Writing direction
Affirmative and negative response strings (for example, YES and NO)
NLS_LANG = .WE8ISO8859P1
Character Set und Globalization, Martin Hoermann, DOAG 2014
Kurzform
7
Character Set & Oracle
NLS_LANG
SELECT sid, serial#, client_charset
FROM
V$SESSION_CONNECT_INFO;
SELECT *
FROM V$NLS_PARAMETERS
WHERE parameter LIKE '%CHARACTERSET%'
ORDER BY parameter;
Character Set und Globalization, Martin Hoermann, DOAG 2014
8
Character-Set - Datenbank
Changing Or Choosing the Database Character Set ( NLS_CHARACTERSET ) (Doc ID 225912.1)
Character Set und Globalization, Martin Hoermann, DOAG 2014
9
Invalid Data
ISO-8859-1
ISO-8859-7
Character Set und Globalization, Martin Hoermann, DOAG 2014
10
Invalid Data
Pass Through Configuration
Encoding: EL8ISO8895P7
NLS_LANG: .WE8ISO8859P1
Character Set und Globalization, Martin Hoermann, DOAG 2014
WE8ISO8895P1
11
Conversion Errors & Replacement Character
U+FFFD
Unbekannte und ungültige Zeichen im Quell-Character-Set
werden zum Replacement Character konvertiert
Character Set und Globalization, Martin Hoermann, DOAG 2014
12
Conversion Errors
Encoding: EL8ISO8895P7
NLS_LANG: .EL8ISO8859P7
Character Set und Globalization, Martin Hoermann, DOAG 2014
WE8ISO8895P1
13
Konvertierung „proben“
SELECT convert( zeichen, 'WE8ISO8859P1', 'EL8ISO8859P7' )
FROM
charset_iso_8859_p1;
Character Set und Globalization, Martin Hoermann, DOAG 2014
14
Kodierung eines
Character Set
U+2A6A5
Drachen, Drachen, Drachen, Drachen
Character Set und Globalization, Martin Hoermann, DOAG 2014
15
Character-Set-Kodierung
„Im Anfang (ἀρχή) war das Wort (λόγος)
und das Wort war bei Gott,
und das Wort war Gott.“
Johannesevangelium, Prolog
Character Set und Globalization, Martin Hoermann, DOAG 2014
16
Character Set
Encoding (ISO/IEC 8859-1)
Character Set und Globalization, Martin Hoermann, DOAG 2014
17
Unicode vs. Encoding
AL32UTF8 / UTF8 (Unicode) Database Character Set Implications (Doc ID 788156.1)
Character Set und Globalization, Martin Hoermann, DOAG 2014
18
UTF-8 nach Unicode
SELECT zeichen, dump( zeichen ) FROM
WHERE zeichen IN( 'Ä', 'ß' );
1:
2:
3:
4:
5:
Character Set und Globalization, Martin Hoermann, DOAG 2014
T06_8859P1
19510
13210
11000011 10000100
00011000100
19610 = 0xC4
U+00C4
19
Übung
U+004C U+0061 U+0072 U+0072 U+0079
U+0045 U+006C U+006C U+0069 U+0073 U+006F U+006E
Character Set und Globalization, Martin Hoermann, DOAG 2014
20
Wo ist Larry?
Lawrence „Larry“ Joseph Ellison
Larry = U+004C U+0061 U+0072 U+0072 U+0079
Ellison = U+0045 U+006C U+006C U+0069 U+0073 U+006F U+006E
DECLARE
-- Konvertierung von ASCII-Zeichen nach Unicode
vc VARCHAR2(200) := 'Ellison';
vc_zeichen VARCHAR2(1);
vc_out VARCHAR2(1000);
BEGIN
FOR i IN 1..length( vc ) LOOP
vc_zeichen := substr( vc, i, 1 );
vc_out := vc_out || ' U+' || trim( to_char( ascii( vc_zeichen ), '000X' ));
END LOOP;
dbms_output.put_line( vc || ' = ' || vc_out );
END;
/
Character Set und Globalization, Martin Hoermann, DOAG 2014
21
Dump
SELECT zeichen, dump( zeichen, 1016 )
FROM
T06_8859P1
WHERE zeichen IN( 'Ä', 'ß' );
Character Set und Globalization, Martin Hoermann, DOAG 2014
22
Wie wird der
Character Set bestimmt?
U+212E
Estimated Symbol
Character Set und Globalization, Martin Hoermann, DOAG 2014
23
Betriebssystem

Windows: abhängig von Ländereinstellungen (z.B. CP1252)

DOS: bestimmt durch chcp (z.B. Code Page 850)

Unix/Linux: durch LANG
Character Set und Globalization, Martin Hoermann, DOAG 2014
24
SQL*Developer
Character Set und Globalization, Martin Hoermann, DOAG 2014
25
TOAD
Character Set und Globalization, Martin Hoermann, DOAG 2014
26
Ultra Compare
Ultra Compare bestimmt die Kodiderung einer Datei automatisch, wird beispielsweise
das Rote Zeichen im Screenshot gefunden, so nimmt das Tool eine bestimmte
Kodierung an (hier MAC-UTF-8). Die Kodierung lässt sich einstellen.
Character Set und Globalization, Martin Hoermann, DOAG 2014
27
Unicode in der Datenbank
Character Set und Globalization, Martin Hoermann, DOAG 2014
28
Unicode Character Sets
Character Set Name
AL24UTFFSS
RDBMS Version
7.2-8.1
UTF8
8.0-12c
UTFE
8.0-12c
AL32UTF8
AL16UTF16
9.0-12c
Unicode Version
1.1
2.1 (8.0-8.1.6)
3.0 (8.1.7-12.1)
2.1 (8.0-8.1.6)
3.0 (8.1.7-12.1)
3.0 (9.0)
3.1 (9.2)
3.2 (10.1)
4.01 (10.2)
5.0 (11.1 and 11.2)
6.1 (12.1).
Unicode Character Sets In The Oracle Database (Doc ID 260893.1)
Character Set und Globalization, Martin Hoermann, DOAG 2014
29
Character-Set-Einstellungen

V$NLS_PROPERTIES

NLS_CHARACTERSET
 CHAR
 VARCHAR2
 LONG
 CLOB (in Multibyte-Zeichensätzen immer AL16UTF16 Big Endian)
 Objektnamen und PL/SQL Code

NLS_NCHAR_CHARACTERSET
 NCHAR
 NVARCHAR2
 NCLOB
Character Set und Globalization, Martin Hoermann, DOAG 2014
30
NLS_LENGTH_SEMANTIC

Maximal 1.500 Zeichen

Maximal 4.000 Bytes

Maximal 32.767 Bytes (12c)
 MAX_STRING_SIZE = EXTENDED
VARCHAR2( 1500 CHAR )
NLS_LENGTH_SEMANTICS
 VARCHAR2, NVARCHAR2, RAW
The National Character Set ( NLS_NCHAR_CHARACTERSET ) in Oracle 9i, 10g , 11g and 12c (Doc ID 276914.1)
Character Set und Globalization, Martin Hoermann, DOAG 2014
31
UTF8 in SQL*Plus
Character Set und Globalization, Martin Hoermann, DOAG 2014
32
Character Set ändern
U+1F4BE
Character Set und Globalization, Martin Hoermann, DOAG 2014
33
Update Character Set
„There are still "dba's" out there who try to change the NLS_CHARACTERSET
or NLS_NCHAR_CHARACTERSET by updating props$ . This is NOT
supported and WILL corrupt your database. This is one of the best way's to
destroy a complete dataset. Oracle Support will TRY to help you out of this but
Oracle will NOT warrant that the data can be recovered or recovered data is
correct. You WILL be asked to do a FULL export and a complete rebuild of the
database. Please, do NOT update props$.“
Changing Or Choosing the Database Character Set
( NLS_CHARACTERSET ) (Doc ID 225912.1)
Character Set und Globalization, Martin Hoermann, DOAG 2014
34
Character Set ändern

Export / Import

CSSCAN / CSALTER

Database Migration Assistant for Unicode (DMU)
Character Set und Globalization, Martin Hoermann, DOAG 2014
35
DMU
Startseite
Character Set und Globalization, Martin Hoermann, DOAG 2014
36
DMU
Features

GUI-geführte Migration

Vorteile:
 In Place
 Data Validation / Cleansing Editor
 Behebung von Pass-Through-Konfigurationen (je Spalte)
 Ausschluss der Migration (je Spalte)

Zu beachten:
 manuelle Tätigkeiten bzgl. Data Dictionary
 nur Unicode als Ziel
Character Set und Globalization, Martin Hoermann, DOAG 2014
37
DMU
Pass-Through-Konfiguration
Character Set und Globalization, Martin Hoermann, DOAG 2014
38
DMU
Fehler im Data Dictionary
SELECT
,
FROM
WHERE
table_name
convert( table_name, 'AL32UTF8' ) konvertiert
user_tables
convert( table_name, 'AL32UTF8' ) <> table_name;
Character Set und Globalization, Martin Hoermann, DOAG 2014
39
DMU
Migration Ausnahmen
Character Set und Globalization, Martin Hoermann, DOAG 2014
40
DMU
Finish
http://blogs.loopback.org/wp-content/uploads/2013/11/DOAG_2013_Unicode_V_1.0.pdf
Character Set und Globalization, Martin Hoermann, DOAG 2014
41
Unicode (U+FDFA)
U+FDFA
SALLALLAHOU ALAYHE WASALLAM
Mögen Allahs Segen und Frieden auf ihm sein
Character Set und Globalization, Martin Hoermann, DOAG 2014
42
Unicode
Themenauswahl

Glyphen vs. Zeichen

Diakritische Zeichen

Ligaturen & Digraphen

Carriage Return vs. Line Feed

Komposition

Schreibrichtung

BOM
Character Set und Globalization, Martin Hoermann, DOAG 2014
43
Glyphen vs. Zeichen
Character Set und Globalization, Martin Hoermann, DOAG 2014
44
Zeichen
U+0041 Latin A
U+FF21Halfwidth Latin A
U+0391 GREEK CAPITAL LETTER ALPHA
U+0410 Cyrillic Capital Letter A
Character Set und Globalization, Martin Hoermann, DOAG 2014
45
Diakritische Zeichen
www.wikipedia.de
Character Set und Globalization, Martin Hoermann, DOAG 2014
46
Komposition
unistr( '\00C4' )
= Ä (static precomposed)
unistr( '\0041\0308' )
= Ä (dynamic composed)
Character Set und Globalization, Martin Hoermann, DOAG 2014
47
Komposition
SELECT
zeichen
FROM
composition
ORDER BY zeichen;
CANONICAL_EQUIVALENCE = TRUE
Character Set und Globalization, Martin Hoermann, DOAG 2014
48
Komposition
SELECT
zeichen
FROM
composition
ORDER BY zeichen;
Character Set und Globalization, Martin Hoermann, DOAG 2014
49
Ligaturen & Digraphen

Ligatur: Verbindung von zwei oder mehr Buchstaben zu einer Glyphe
 ß
 w
nls_upper(
nls_upper(
nls_upper(
nls_upper(
'ß',
'ß',
'ß',
'ß',
'NLS_SORT=''GERMAN''' )
'NLS_SORT=''XGERMAN''' )
'NLS_SORT=''GERMAN_DIN''' )
'NLS_SORT=''XGERMAN_DIN''' )
Character Set und Globalization, Martin Hoermann, DOAG 2014
50
Ligaturen & Digraphen

Digraph: Kombination von zwei oder mehr Buchstaben für ein Phonem
 sch
 ae für ä
 Ch im Spanischen (NLS_SORT=SPANISH_M)
Character Set und Globalization, Martin Hoermann, DOAG 2014
51
Ligaturen & Digraphen
„Mögen Allahs Segen und Frieden auf ihm sein“.
Wird immer nach dem Nennen des Namens von Mohammed aus Respekt
gesagt/geschrieben.
Character Set und Globalization, Martin Hoermann, DOAG 2014
52
Carriage Return vs. Line Feed
Carriage Return = U+0013
Windows = CR/LF
Unix = LF
Mac = CR
Line Feed = U+0010
Character Set und Globalization, Martin Hoermann, DOAG 2014
53
Writing Directions
Character Set und Globalization, Martin Hoermann, DOAG 2014
54
Writing Directions
to_char( sysdate, 'Day' , 'NLS_DATE_LANGUAGE=''ARABIC''' )
Character Set und Globalization, Martin Hoermann, DOAG 2014
55
Byte Order Mark (BOM)

Dient zur Markierung von UTF16-Kodierungen

Dient zur Unterscheidung von Big- und Little Endian

U+FEFF: Zero Width No-Break Space

U+FFFE: ungültiges Zeichen (bei Big- und Little-Endian Vertauschung)
Character Set und Globalization, Martin Hoermann, DOAG 2014
56
Byte Order Mark (BOM)

In UTF8 ergibt sich daraus die Bytefolge 0xEFBBBF

In Windows CP 1252 interpretiert wird es dann
 0xEF = Lateinischer Kleinbuchstabe i mit Trema
 0xBB = Nach rechts zeigendes doppeltes spitzes Anführungszeichen
 0xBF = Umgekehrtes Fragezeichen
Character Set und Globalization, Martin Hoermann, DOAG 2014
57
Byte Order Mark (BOM)

Wird U+FEFF aus UTF16 in CP 1252 interpretiert

Dann ist die Bytefolge 0xFEFF in CP1252 wie folgt
 0xFE = Latin small letter thorn
 0xFF = Latin small letter y with diaeresis
Character Set und Globalization, Martin Hoermann, DOAG 2014
58
BOM-Byte in SQL*Plus
0xEFBBBF in CP850
Character Set und Globalization, Martin Hoermann, DOAG 2014
59
Literatur
Character Set und Globalization, Martin Hoermann, DOAG 2014
60
Collation & Sorting
U+4DC0
Hexagram for the creative heaven
Hexagramme: http://www.unicode.org/charts/PDF/U4DC0.pdf
Character Set und Globalization, Martin Hoermann, DOAG 2014
61
Collation: Sortierung vs. Vergleich
ALTER SESSION SET NLS_COMP=LINGUISTIC;
ALTER SESSION SET NLS_SORT=BINARY_CI;
http://docs.oracle.com/database/121/NLSPG/ch5lingsort.htm#NLSPG976
Character Set und Globalization, Martin Hoermann, DOAG 2014
62
Sortierverfahren

Binary

Monolingual

Multilingual

Unicode Collation Algorithm
Character Set und Globalization, Martin Hoermann, DOAG 2014
63
Monolingual
NLS_SORT=SPANISH_M
Character Set und Globalization, Martin Hoermann, DOAG 2014
64
Multilingual


Oracle Globalization

multilingual collation … can sort data in more than one language in one sort

Ja, aber hier geht es um die Sortierung von Alphabeten (Latein, Griechisch…)
Unicode Collation Algorithm

Collation varies according to language and culture
Character Set und Globalization, Martin Hoermann, DOAG 2014
65
Deutsche Sortierungen

GERMAN

XGERMAN

GERMAN_DIN
 Deutsche Telefonbuch Norm

XGERMAN_DIN

_CI
 case-insensitive
 z.B. XGERMAN_CI

_AI
 accent-insensitive and case-insensitive
 z.B. XGERMAN_AI
http://www.pipperr.de/dokuwiki/doku.php?id=prog:sql_nls_comp_nls_sort_inguistic_search_sorting
Character Set und Globalization, Martin Hoermann, DOAG 2014
66
Unicode Collation Algorithm
NLS_SORT=UCA0610_SPANISH_S4_VS_BY_EN_FN_HN_DN_MN
Version
Character Set und Globalization, Martin Hoermann, DOAG 2014
67
Unicode Collation Algorithm
NLS_SORT=UCA0610_SPANISH_S4_VS_BY_EN_FN_HN_DN_MN
Sprache
Character Set und Globalization, Martin Hoermann, DOAG 2014
68
Unicode Collation Algorithm
NLS_SORT=UCA0610_SPANISH_S4_VS_BY_EN_FN_HN_DN_MN
Unicode Comparison Level

_S1 / _AI = Zeichen

_S2 / _CI = Unterscheidung diakritische Zeichen bei gleichen Buchstaben

_S3 = Klein- / Großschreibung und weitere Besonderheiten

_S4 = z.B. Unterscheidung von Hiragana und Katakana
Character Set und Globalization, Martin Hoermann, DOAG 2014
69
Unicode Collation Algorithm
NLS_SORT=UCA0610_SPANISH_S4_VS_BY_EN_FN_HN_DN_MN
Variable Characters (Blank, Dash …)
& Weighting

_VB = blanked: Variable Zeichen (z.B. Blank) werden ignoriert

_VN = Non-ignorable: Variable Zeichen werden gewichtet und verglichen

_VS = Shifted: Variable Zeichen werden auf den Level 1-3 ignoriert und dann
gewichtet
Character Set und Globalization, Martin Hoermann, DOAG 2014
70
Unicode Collation Algorithm
NLS_SORT=UCA0610_SPANISH_S4_VS_BY_EN_FN_HN_DN_MN
Backwards
 _BY = on – diakritische Zeichen werden nach Richtung sortiert
 _BN = off
Character Set und Globalization, Martin Hoermann, DOAG 2014
71
Unicode Collation Algorithm
NLS_SORT=UCA0610_SPANISH_S4_VS_BY_EN_FN_HN_DN_MN
Normalization
Case First
hiraganaQuaternary
numeric
match style
Character Set und Globalization, Martin Hoermann, DOAG 2014
72
Weiterführende Themen
Character Set und Globalization, Martin Hoermann, DOAG 2014
73
TO_CHAR

Format Maske D = Tag der Woche (1-7)

abhängig von NLS_TERRITORY

z.B. Sonntag


AMERICA = 1

GERMANY = 7
NLS_TERRITORY kann nicht im to_char definiert werden
ALTER SESSION SET NLS_TERRITORY='AMERICA';
SELECT to_char( to_date ( '09.11.2014', 'DD.MM.YYYY' )
, 'D', 'NLS_DATE_LANGUAGE=''GERMAN''' )
FROM
dual;
Character Set und Globalization, Martin Hoermann, DOAG 2014
74
Oracle Locale Builder
Character Set und Globalization, Martin Hoermann, DOAG 2014
75
U+17DA
U+17DA: KHMER SIGN KOOMUUT
Das Khmer-Zeichen „Koomuut“ wird traditionell als Schmuckelement verwendet,
welches das Ende eines Buches oder eine Abhandlung kennzeichnet.
Character Set und Globalization, Martin Hoermann, DOAG 2014
76
Zentrale Paderborn
Westernmauer 12 - 16
33098 Paderborn
Tel.: 05251 1063-0
Seminarzentrum Wiesbaden
Kreuzberger Ring 13
65205 Wiesbaden
Tel.: 0611 77840-00
Zentrales Fax:
0180 1 67349 0
0180 1 ORDIX 0
Weitere Geschäftsstellen
in Köln, Münster und Neu-Ulm
E-Mail: [email protected]
Internet: http://www.ordix.de
Vielen Dank für Ihre Aufmerksamkeit!
Herunterladen