Java: Π ΡΡΡΠΊΠΈΠ΅ Π±ΡΠΊΠ²Ρ ΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎβ¦
Π ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠ΄ΠΎΠ±Π½ΠΎ (Ρ ΠΎΡΡ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄ΡΠΆΠ½ΠΎ). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π±ΡΠ»Π° Π²Π²Π΅Π΄Π΅Π½Π° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ½Π° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π΅Ρ Π½Π°ΡΡΡΠΎΠ΅ΠΊ (Π΄Π»Ρ ΡΡΡΡΠΊΠΈΡ Π²ΠΈΠ½Π΄ΠΎΠ² ΠΏΡΠΈΠ½ΡΡΠ° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° Cp1251), ΠΈ Π² ΡΡΠ°ΡΡΡ JDK Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° file.encoding. Π JDK 1.3 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ, ΠΈΠ½ΠΎΠ³Π΄Π° — Π½Π΅Ρ. ΠΡΠ·Π²Π°Π½ΠΎ ΡΡΠΎ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Java: Π ΡΡΡΠΊΠΈΠ΅ Π±ΡΠΊΠ²Ρ ΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎβ¦ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
Java: Π ΡΡΡΠΊΠΈΠ΅ Π±ΡΠΊΠ²Ρ ΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ…
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠΆΠ½Ρ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠΌΠ½ΡΠΌ ΠΈ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ, ΡΡΠΎΠ±Ρ Π½Π΅ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Π½ΡΠΌ Π² ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ.
ΠΠΎΡΠ΅Π½Ρ ΠΠΆ. ΠΠΈΡΠ΅Ρ
Peter «s Almanac.
ΠΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ
ΠΠΎΠ³Π΄Π° Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠΈΠ½Π°Π» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΠ·ΡΠΊΠ΅ C, ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΌΠΎΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ (Π½Π΅ ΡΡΠΈΡΠ°Ρ HelloWorld) Π±ΡΠ»Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ΠΠΠ‘Π’-Π° (ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ ΡΠ°ΠΊΡΡ? :-) Π² Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΡ. ΠΡΠ»ΠΎ ΡΡΠΎ Π² Π΄Π°Π»ΡΠΊΠΎΠΌ 1991;ΠΎΠΌ Π³ΠΎΠ΄Ρ. Π‘ ΡΠ΅Ρ ΠΏΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ, Π½ΠΎ Π·Π° ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΠ΅ 10 Π»Π΅Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΊΠΈ ΡΠ²ΠΎΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΡΡΡ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π΅ ΠΏΠΎΡΠ΅ΡΡΠ»ΠΈ. Π‘Π»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΆΠ΅ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΎ Π΄Π°Π½Π½ΡΡ Π² ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°Ρ ΠΈ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΌΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΠ΄Π½ΠΎΠΉ. ΠΠ»Ρ ΡΡΡΡΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π΄Π΅ΡΡΡΠΊΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΎΠΊ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΅ΡΡ Π±ΠΎΠ»Π΅Π΅ Π·Π°ΠΏΡΡΠ°Π½Π½ΠΎΠΉ.
ΠΡΠΊΡΠ΄Π° ΠΆΠ΅ Π²Π·ΡΠ»ΠΈΡΡ Π²ΡΠ΅ ΡΡΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΎΠ½ΠΈ Π½ΡΠΆΠ½Ρ? ΠΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠΈΡΠΎΠ΄Π΅ ΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π±ΡΠΊΠ²Ρ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° Π½Π°Π΄ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±ΡΠΊΠ²Π΅ Π½Π΅ΠΊΠΎΠ΅ ΡΠΈΡΠ»ΠΎ (ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΠΈ Π΄ΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ² — Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΠ΅ ΠΏΡΠΎ ΡΡ ΠΆΠ΅ Π°Π·Π±ΡΠΊΡ ΠΠΎΡΠ·Π΅). ΠΡΠΈΡΡΠΌ ΡΠΈΡΠ»ΠΎ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡΠ΅ — ΡΠ΅ΠΌ ΠΌΠ΅Π½ΡΡΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΠ°Π·ΡΡΠ΄ΠΎΠ² Π±ΡΠ΄Π΅Ρ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ΠΎ, ΡΠ΅ΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΠΌΡΡΡ. ΠΠΎΡ ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Π½Π°Π±ΠΎΡΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈ ΡΠΈΡΠ΅Π» ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈ Π΅ΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°. ΠΠ΅Π»Π°Π½ΠΈΠ΅ Π»ΡΠ±ΠΎΠΉ ΡΠ΅Π½ΠΎΠΉ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ ΠΏΠ°ΠΌΡΡΡ, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΡΠ°Π·ΠΎΠ±ΡΡΠ½Π½ΠΎΡΡΡ ΡΠ°Π·Π½ΡΡ Π³ΡΡΠΏΠΏ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡΠΈΠΊΠΎΠ² ΠΈ ΠΏΡΠΈΠ²Π΅Π»Π° ΠΊ Π½ΡΠ½Π΅ΡΠ½Π΅ΠΌΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π΅Π». Π‘Π°ΠΌΡΠΌ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡΠ° (8 Π±ΠΈΡ), ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΎΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»-Π²ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² 256. ΠΠ°Π±ΠΎΡ ΠΏΠ΅ΡΠ²ΡΡ 128 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΎΠ²Π°Π½ (Π½Π°Π±ΠΎΡ ASCII) ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ Π²ΠΎ Π²ΡΠ΅Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°Ρ (ΡΠ΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ, Π³Π΄Π΅ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ ΡΠΆΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΡΠ»ΠΈ ΠΈΠ· ΡΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ). ΠΠ½Π³Π»ΠΈΡΠΊΠΈΠ΅ Π±ΡΠΊΠΎΠ²ΠΊΠΈ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΡΠ½ΠΊΡΡΠ°ΡΠΈΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΡΡΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅, ΡΡΠΎ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΈΡ ΠΏΠΎΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΆΠΈΠ²ΡΡΠ΅ΡΡΡ Π² ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ :-). ΠΡΡΠ³ΠΈΠ΅ ΡΠ·ΡΠΊΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π½Π΅ Π² ΡΡΠΎΠ»Ρ ΡΡΠ°ΡΡΠ»ΠΈΠ²ΠΎΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ — ΠΈΠΌ Π²ΡΠ΅ΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΡΡΠΈΡΡΡΡ Π² ΠΎΡΡΠ°Π²ΡΠΈΡ ΡΡ 128 ΡΠΈΡΠ»Π°Ρ .
Unicode
Π ΠΊΠΎΠ½ΡΠ΅ 80-Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΡΠΎΠ·Π½Π°Π»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ° Π½Π° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΡΠΎ ΠΈ ΠΏΡΠΈΠ²Π΅Π»ΠΎ ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Unicode. Unicode — ΡΡΠΎ ΠΏΠΎΠΏΡΡΠΊΠ° ΡΠ°Π· ΠΈ Π½Π°Π²ΡΠ΅Π³Π΄Π° Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ. ΠΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ Π² 256 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΡΡ Π½Π΅ ΡΠ»ΠΎΠΆΠΈΡΡΡΡ ΠΏΡΠΈ Π²ΡΡΠΌ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ. ΠΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΊΠ°Π·Π°Π»ΠΎΡΡ, ΡΡΠΎ ΡΠΆ 2-Ρ ΡΠΎ Π±Π°ΠΉΡ (65 536 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²) Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ Π²Π°ΡΠΈΡΡ. ΠΠ½ Π½Π΅Ρ — ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ° Unicode (3.1) ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΆΠ΅ 94 140 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΠ»Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ»-Π²Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΡΠΆΠ΅ ΠΏΡΠΈΠ΄ΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ 4 Π±Π°ΠΉΡΠ° (4 294 967 296 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²). ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈ Ρ Π²Π°ΡΠΈΡ Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ… :-).
Π Π½Π°Π±ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Unicode Π²Ρ ΠΎΠ΄ΡΡ Π²ΡΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π±ΡΠΊΠ²Ρ ΡΠΎ Π²ΡΡΠΊΠΈΠΌΠΈ ΡΡΡΡΠΎΡΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΡΠΈΠΏΠ΅Π½Π΄ΡΠ»ΡΠΊΠ°ΠΌΠΈ, Π³ΡΠ΅ΡΠ΅ΡΠΊΠΈΠ΅, ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅, ΠΈΠ΅ΡΠΎΠ³Π»ΠΈΡΡ, ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΡΠ΅Π²Π΄ΠΎΠ³ΡΠ°ΡΠΈΠΊΠΈ ΠΈ ΠΏΡ. ΠΈ ΠΏΡ. Π ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ ΡΠ°ΠΊ Π»ΡΠ±ΠΈΠΌΡΠ΅ Π½Π°ΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΡ (Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ 0×0400−0×04ff). Π’Π°ΠΊ ΡΡΠΎ Ρ ΡΡΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π΄ΠΈΡΠΊΡΠΈΠΌΠΈΠ½Π°ΡΠΈΠΈ Π½Π΅Ρ.
ΠΡΠ»ΠΈ ΠΠ°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΊΠΎΠ΄Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π΄Π»Ρ ΠΈΡ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ «Π’Π°Π±Π»ΠΈΡΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² «ΠΈΠ· WinNT. ΠΠΎΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΡ:
.
ΠΡΠ»ΠΈ Ρ ΠΠ°Ρ Π΄ΡΡΠ³Π°Ρ OS ΠΈΠ»ΠΈ ΠΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΠ»ΠΊΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΎ ΠΏΠΎΠ»Π½ΡΡ ΡΠ°ΡΠΊΠ»Π°Π΄ΠΊΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (charts) ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΡΠ΅ Unicode (internet.
Π’ΠΈΠΏΡ char ΠΈ byte
Π Java Π΄Π»Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π²ΡΠ΄Π΅Π»Π΅Π½ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ char ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ Π² 2 Π±Π°ΠΉΡΠ°. ΠΡΠΎ ΡΠ°ΡΡΠΎ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ ΠΏΡΡΠ°Π½ΠΈΡΡ Π² ΡΠΌΠ°Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΠ°Π½ΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π»ΠΈ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° C/C++). ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ Π² 1 Π±Π°ΠΉΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² C/C++ ΡΠΈΠΏ char Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π±Π°ΠΉΡΠΎΠ² — ΡΠ°ΠΌ Π½Π΅Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ. Π Java Π΄Π»Ρ Π±Π°ΠΉΡΠΎΠ² ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠ²ΠΎΠΉ ΡΠΈΠΏ — ΡΠΈΠΏ byte. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ C-ΠΈΡΠ½ΠΎΠΌΡ char ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Java-Π²ΡΠΊΠΈΠΉ byte, Π° Java-Π²ΡΠΊΠΎΠΌΡ char ΠΈΠ· ΠΌΠΈΡΠ° C Π±Π»ΠΈΠΆΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠΈΠΏ wchar_t. ΠΠ°Π΄ΠΎ ΡΡΡΠΊΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΠΏΠΎΠ½ΡΡΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈ Π±Π°ΠΉΡΠΎΠ² — ΠΈΠ½Π°ΡΠ΅ Π½Π΅ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½Ρ.
Java ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄Π»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΡΠ°Π½Π΄Π°ΡΡ Unicode. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Java ΠΎΠΆΠΈΠ΄Π°ΡΡ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠ° char ΡΠΈΠΌΠ²ΠΎΠ»Ρ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ ΠΊΠΎΠ΄Π°ΠΌΠΈ Unicode. Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, ΠΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΠΈΡ Π½ΡΡΡ ΡΡΠ΄Π° ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ — ΡΠΈΡΡΡ Π΅ΡΡΡ ΡΠΈΡΡΡ, ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π²ΡΡ ΡΡΠ΅ΡΠΏΠΈΡ, Π½ΠΎ ΠΏΡΠΈ Π»ΡΠ±ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠΎ ΠΈΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ Unicode. Π’Π°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ ΠΏΠΎΠ»Π°Π³Π°ΡΡ, ΡΡΠΎ Ρ ΡΠΈΠΏΠ° char ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π°. ΠΠΎ ΡΡΠΎ Π²Π½ΡΡΡΠΈ JVM. ΠΠΎΠ³Π΄Π° Π΄Π°Π½Π½ΡΠ΅ ΡΠΈΡΠ°ΡΡΡΡ ΠΈΠ·Π²Π½Π΅ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π½Π°ΡΡΠΆΡ, ΡΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΡΠΈΠΏΠΎΠΌ — ΡΠΈΠΏΠΎΠΌ byte. ΠΡΠ΅ ΠΏΡΠΎΡΠΈΠ΅ ΡΠΈΠΏΡ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΡΡΡΡΡ ΠΈΠ· Π±Π°ΠΉΡΠΎΠ² Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° Π΄Π°Π½Π½ΡΡ . ΠΠΎΡ ΡΡΡ ΡΠΎ Π½Π° ΡΡΠ΅Π½Ρ ΠΈ Π²ΡΡ ΠΎΠ΄ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ — Π² Java ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΎΡΠΌΠ°Ρ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΡΠΈΠΏΠ° char. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΏΠΎ 2 ΠΊΠ»Π°ΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ (ByteToChar ΠΈ CharToByte). ΠΠ»Π°ΡΡΡ ΡΡΠΈ Π»Π΅ΠΆΠ°Ρ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ sun.io. ΠΡΠ»ΠΈ, ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅ ΠΈΠ· char Π² byte Π½Π΅ Π±ΡΠ»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°, ΠΎΠ½ Π·Π°ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ» ?.
ΠΡΡΠ°ΡΠΈ, ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΡΡΡΠ°Π½ΠΈΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π½Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΡ JDK 1.1 ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠΈ, Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΎΠΊ, Π° ΡΠΎ ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ KOI8_R. ΠΡΡΡΠ΅Π΅, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ΄Π΅Π»Π°ΡΡ — ΡΠΌΠ΅Π½ΠΈΡΡ Π²Π΅ΡΡΠΈΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΡΡ. Π‘ΡΠ΄Ρ ΠΏΠΎ Sun-ΠΎΠ²ΡΠΊΠΎΠΌΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π±ΡΠ»ΠΎ ΡΠ΅ΡΠ΅Π½ΠΎ Π² Π²Π΅ΡΡΠΈΠΈ JDK 1.1.6.
ΠΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΈ JDK 1.4 Π½Π°Π±ΠΎΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΎΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ»ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ JDK. ΠΠ°ΡΠΈΠ½Π°Ρ Ρ 1.4 ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ Π½ΠΎΠ²ΠΎΠ΅ API (ΠΏΠ°ΠΊΠ΅Ρ java.nio.charset), ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΡ ΡΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°ΡΡ ΡΠ΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ, Π½ΠΎ ΠΆΡΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΠ°ΠΌ).
ΠΠ»Π°ΡΡ String
Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΡΠΎΠΊ Π² Java ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° java.lang.String. ΠΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π½ΡΡΡΠΈ ΡΠ΅Π±Ρ Ρ ΡΠ°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (char[]), ΠΈ ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ. Π‘Π°ΠΌΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ — ΡΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ, ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ² Π±Π°ΠΉΡΠΎΠ² (byte[]) ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ getBytes (). ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° Π±Π°ΠΉΡΠΎΠ² Π² ΡΡΡΠΎΠΊΠΈ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠ°ΠΊΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ρ ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΅ΡΡΡ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π΄Π°ΡΡ Π΅Ρ ΠΈΠΌΡ. ΠΠΎΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ Π±Π°ΠΉΡΠΎΠ² ΠΈΠ· ΠΠΠ-8 Π² Windows-1251:
// ΠΠ°Π½Π½ΡΠ΅ Π² ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅ ΠΠΠ-8.
byte[] koi8Data = …;
// ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ ΠΈΠ· ΠΠΠ-8 Π² Unicode.
String string = new String (koi8Data, «KOI8_R »);
// ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ ΠΈΠ· Unicode Π² Windows-1251.
byte[] winData = string. getBytes («Cp1251 »);
Π‘ΠΏΠΈΡΠΎΠΊ 8-ΠΌΠΈ Π±ΠΈΡΠΎΠ²ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΎΠΊ, Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ JDK ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΡ ΡΡΡΡΠΊΠΈΠ΅ Π±ΡΠΊΠ²Ρ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π½ΠΈΠΆΠ΅, Π² ΡΠ°Π·Π΄Π΅Π»Π΅ «8-ΠΌΠΈ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΡΡΠΊΠΈΡ Π±ΡΠΊΠ² » .
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° — ΡΡΠΎ ΡΠΎΡΠΌΠ°Ρ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΊΡΠΎΠΌΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡΡ 8-ΠΌΠΈ Π±ΠΈΡΠΎΠ²ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΎΠΊ Π² Java ΡΠ°ΠΊΠΆΠ΅ Π½Π° ΡΠ°Π²Π½ΡΡ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡΠΎΠ²ΡΠ΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ. Π ΡΠ°ΠΊΠΈΠΌ ΠΎΡΠ½ΠΎΡΡΡΡΡ UTF-8, UTF-16, Unicode ΠΈ ΠΏΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π²ΠΎΡ ΡΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π°ΠΉΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ UnicodeLittleUnmarked (16-ΡΠΈ Π±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Unicode, ΠΌΠ»Π°Π΄ΡΠΈΠΉ Π±Π°ΠΉΡ ΠΏΠ΅ΡΠ²ΡΠΉ, Π±Π΅Π· ΠΏΡΠΈΠ·Π½Π°ΠΊΠ° ΠΏΠΎΡΡΠ΄ΠΊΠ° Π±Π°ΠΉΡΠΎΠ²):
// Π‘ΡΡΠΎΠΊΠ° Unicode.
String string = «… » ;
// ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ ΠΈΠ· Unicode Π² UnicodeLittleUnmarked.
byte[] data = string. getBytes («UnicodeLittleUnmarked »);
ΠΡΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡΡ Π»Π΅Π³ΠΊΠΎ ΠΎΡΠΈΠ±ΠΈΡΡΡΡ — Π΅ΡΠ»ΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° Π±Π°ΠΉΡΠΎΠ²ΡΡ Π΄Π°Π½Π½ΡΡ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΡΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ· byte Π² char, ΡΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ. ΠΠ½ΠΎΠ³Π΄Π° ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΠ°ΡΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, Π½ΠΎ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΠ°ΡΡΡ Π΄Π°Π½Π½ΡΡ Π±ΡΠ΄Π΅Ρ Π±Π΅Π·Π²ΠΎΠ·Π²ΡΠ°ΡΠ½ΠΎ ΠΏΠΎΡΠ΅ΡΡΠ½Π°.
Π ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠ΄ΠΎΠ±Π½ΠΎ (Ρ ΠΎΡΡ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄ΡΠΆΠ½ΠΎ). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π±ΡΠ»Π° Π²Π²Π΅Π΄Π΅Π½Π° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ½Π° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π΅Ρ Π½Π°ΡΡΡΠΎΠ΅ΠΊ (Π΄Π»Ρ ΡΡΡΡΠΊΠΈΡ Π²ΠΈΠ½Π΄ΠΎΠ² ΠΏΡΠΈΠ½ΡΡΠ° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° Cp1251), ΠΈ Π² ΡΡΠ°ΡΡΡ JDK Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° file.encoding. Π JDK 1.3 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ, ΠΈΠ½ΠΎΠ³Π΄Π° — Π½Π΅Ρ. ΠΡΠ·Π²Π°Π½ΠΎ ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ: ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ file. encoding ΡΡΠ°Π²ΠΈΡΡΡ ΠΏΠΎ ΡΠ΅Π³ΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°. Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ Π² Π½ΡΡΡΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΡΠΈ ΡΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ file. encoding, Π½ΠΎ ΡΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π΅ΡΡ Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π·Π°ΠΏΡΡΠΊΠ° JVM (ΡΠΎΠ±ΡΠ½ΠΎ, ΠΏΡΠΈ ΠΈΡ ΡΠ°Π·Π±ΠΎΡΠ΅). ΠΠΎΠΎΠ±ΡΠ΅-ΡΠΎ, ΠΊΠ°ΠΊ ΡΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ Π² Sun, ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΎΡΡΠ°ΠΆΠ°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ, ΠΈ ΠΎΠ½Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ (ΡΠΌ., Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ BugID 4 163 515) Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π² JDK 1.4 Beta 2 ΡΠΌΠ΅Π½Π° ΡΡΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΎΠΏΡΡΡ Π½Π°ΡΠ°Π»Π° ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΡΡΠ΅ΠΊΡ. Π§ΡΠΎ ΡΡΠΎ, ΡΠΎΠ·Π½Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΡΡΡ ΠΈΡΡΠ΅Π·Π½ΡΡΡ — Sun-ΠΎΠ²ΡΡ ΡΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ° ΠΏΠΎΠΊΠ° Π½Π΅ Π΄Π°Π»ΠΈ.
ΠΡΠ° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΡΠ²Π½ΠΎ Π½Π΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ. ΠΠ± ΡΡΠΎΠΌ Π½Π°Π΄ΠΎ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠΌΠ½ΠΈΡΡ — Java Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΡΠ°ΡΡΡΡ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ Π±Π°ΠΉΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΠΎΠΊΠΈ String (ΡΠ°ΠΊ ΠΆΠ΅ ΠΎΠ½Π° Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΠ°ΡΠΈ ΠΌΡΡΠ»ΠΈ ΠΏΠΎ ΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΠΎΠ΄Ρ :-). ΠΠ½Π° ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ΅ΠΊΡΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π’.ΠΊ. ΡΡΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΎΠ΄Π½Π° Π½Π° Π²ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠΊΠ½ΡΡΡΡΡ Π½Π° Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎΡΡΠΈ.
ΠΠ»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ· Π±Π°ΠΉΡΠΎΠ² Π² ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΈΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ. ΠΡΠΎΡΡΠΎΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π½Π΅Π»ΡΠ·Ρ — ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ°ΠΌΡΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ±Π°ΠΉΡΠ½ΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° read () ΠΈΠ· InputStream, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠΈΠΏΡ char:
InputStream is = .;
int b;
StringBuffer sb = new StringBuffer ();
while ((b=is.read ())≠-1).
{.
sb. append ((char)b); //.
ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΠ°ΠΌ Π½Π΅ ΠΏΠΎΠ²Π΅Π·Π»ΠΎ, ΠΈ Ρ ΠΠ°Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΠ°Ρ Π²Π΅ΡΡΠΈΡ — Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΏΡΠΈΠ΄ΡΡΡΡ ΠΏΠΎΠΈΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ:
ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Russian Apache — Π·Π΄Π΅ΡΡ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ.
Π‘Π²ΠΎΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» ΠΡΡΠ΅ΡΠ»Π°Π² ΠΠ΅Π΄Π°ΠΊ.
ΠΡ, Π° ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΠ·Π²Π»Π΅ΡΡ ΡΠ°ΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ — ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈΠΌΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ (ΠΈΠ»ΠΈ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ²Π΅ΡΠ΅Π½Ρ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅ Π±ΡΠΎΡΠ·Π΅ΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ) ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²:
public void doPost (HttpServletRequest request, HttpServletResponse response).
throws ServletException, IOException.
{.
// ΠΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½Π°Ρ engine.
// ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ISO-8859−1, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ.
// ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ — Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΡ ΡΡΡ Π½Π΅Ρ.
String requestEnc = «ISO-8859−1 » ;
// ΠΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½Π°Ρ Π² Π±ΡΠΎΡΠ·Π΅ΡΠ΅.
String clientEnc = request. getParameter («charset »);
if (clientEnc==null) clientEnc= «Cp1251 » ;
// ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°.
String value = request. getParameter («value »);
//.
if (value≠null).
value = new String (value.getBytes (requestEnc), clientEnc);
…
JSP.
Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ JSP (Java Server Pages) ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° ΡΠ΅ΡΠ²Π»Π΅ΡΡ. ΠΠΎ ΡΡΡΠΈ Π΄Π΅Π»Π° ΡΠ΅ΡΠ²Π΅Ρ, ΠΏΡΠΈ Π·Π°ΠΏΡΠΎΡΠ΅ Π² ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π· Π½Π° Π»Π΅ΡΡ Π³Π΅Π½Π΅ΡΠΈΡ ΠΈΠ· jsp-ΡΡΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄ ΡΠ΅ΡΠ²Π»Π΅ΡΠ°, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ Π΅Π³ΠΎ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠ΅ΡΠ²Π»Π΅Ρ. ΠΠΎΡΡΠΎΠΌΡ Ρ JSP Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΡΡ ΠΎΠΆΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΡΡΡΠΊΠΈΠΌΠΈ Π±ΡΠΊΠ²Π°ΠΌΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ΅ΡΠ°ΡΡΡΡ ΠΎΠ½ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ Π΄ΡΡΠ³ΠΎΠΌΡ. ΠΡΡΡ ΡΡΠΈ ΠΌΠ΅ΡΡΠ° Π³Π΄Π΅ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΡΡΡΠ΄Π½ΠΎΡΡΠΈ — ΡΡΡΡΠΊΠΈΠ΅ Π±ΡΠΊΠ²Ρ Π²Π½ΡΡΡΠΈ ΡΠ°ΠΌΠΎΠΉ jsp-ΡΡΡΠ°Π½ΠΈΡΡ, Π² ΠΎΡΠ²Π΅ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΈ Π² Π·Π°ΠΏΡΠΎΡΠ΅ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π° ΡΠ΅ΡΠ°ΡΡΡΡ Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ΅Π³Π° page:
Π£Π²ΠΈΠ΄Π΅Π² ΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ, ΡΡΠΎ ΡΡΡΠ°Π½ΠΈΡΠ° Π·Π°ΠΏΠΈΡΠ°Π½Π° Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅, ΠΈ ΡΡΠΎ Π² ΡΠ³Π΅Π½Π΅ΡΡΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π²ΡΠ·ΠΎΠ² response. setContentType () Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ contentType. ΠΡΠ»ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Servlet 2.3, ΡΠΎ ΠΎΠ½ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ ΠΈ Π²ΡΠ·ΠΎΠ² request. setCharacterEncoding () Ρ Π½ΡΠΆΠ½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΎΠΉ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΎΠΌ ΡΠ΅ΡΠ°Ρ ΠΈ ΡΡΠ΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠ»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² Π΄Π»Ρ ΡΠ°ΡΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π² Π·Π°ΠΏΡΠΎΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½Π°Π΄ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΡ ΠΈΡΡΠ΅Π½ΠΈΡ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΌ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΏΠΎ ΡΠ΅ΡΠ²Π»Π΅ΡΠ°ΠΌ.
ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°, Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ JSP-ΡΠΎΡΡΠΌ Jive Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΡΡΠΊΠΈΠΌΠΈ Π±ΡΠΊΠ²Π°ΠΌΠΈ Π½Π°Π΄ΠΎ ΠΎΡΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ:
/jive/header.jsp.
/jive/admin/header.jsp.
Π Π½ΠΈΡ Π½Π°Π΄ΠΎ Π² Π½Π°ΡΠ°Π»ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡΠΎΡΠΊΡ.
ΠΠΌΠ΅ΡΡΠΎ UTF-8 ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΡΡΡΠΊΠΈΠ΅ Π±ΡΠΊΠ²Ρ — Π²ΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²ΠΊΡΡΠΎΠ² ΠΈ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠΉ. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΡΡΠΎΠΌ ΠΏΡΠΈΡΠ»Π°Π» ΠΠ»Π΅ΠΊΡΠ΅ΠΉ ΠΠΏΠΈΡΠΊΠΈΠ½, Π·Π° ΡΡΠΎ Π΅ΠΌΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ.
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π±Π°Π³ΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΡΡΡΡΠΊΠΈΠΌΠΈ Π±ΡΠΊΠ²Π°ΠΌΠΈ Π² JSP. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ²Π΅Ρ Orion Π½Π΅ Π»ΡΠ±ΠΈΡ ΡΡΡΡΠΊΡΡ Π±ΡΠΊΠ²Ρ «Π’ «- ΠΎΠ½ Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Ρ Π² ΡΠ³Π΅Π½Π΅ΡΡΠ½Π½ΡΠΉ ΡΠ΅ΡΠ²Π»Π΅Ρ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΈΠΌΠ²ΠΎΠ» ΠΊΠ°Π²ΡΡΠΊΠΈ. Π’Π°ΠΌ Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΎΡΡΡΡ Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:
…
switch (charstring.c1(i)).
…
public final char c1(int i).
{.
if (i < 0 || i >= length).
throw new StringIndexOutOfBoundsException (i);
else.
return (char)(data[offset + i] & 0xff);
data — ΡΡΠΎ ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΠΏΠ° char[]. ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ, ΠΎΡΠΈΠ±ΠΊΠ° ΡΡΡ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½Π° — ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠΎΡΠ΅ΠΌΡ-ΡΠΎ Π±ΡΠ» ΡΠ²Π΅ΡΠ΅Π½ ΡΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Ρ ΠΊΠΎΠ΄Π°ΠΌΠΈ Π±ΠΎΠ»ΡΡΠ΅ 255 — ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈΡΠΎΠ΄Ρ. :-).
JavaMail.
ΠΠ°ΠΊΠ΅Ρ JavaMail ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠΌΠΈ ΠΏΠΈΡΡΠΌΠ°ΠΌΠΈ. ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΠΈΡΡΠΌΠ° ΡΠ΅ΡΠ΅Π· ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ. Π Π°Π·Π½ΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ ΠΏΠΎ ΡΠ°Π·Π½ΠΎΠΌΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π½Π°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ. Π‘Π°ΠΌΡΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΠ΅ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ Internet ΠΎΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° ΡΡΠ°ΡΠΎΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ RFC-822. Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΡΠΎΠΌΡ ΡΡΠ°Π½Π΄Π°ΡΡΡ Π² ΡΠ»ΡΠΆΠ΅Π±Π½ΡΡ ΠΏΠΎΠ»ΡΡ (Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°Ρ ) ΠΏΠΈΡΠ΅ΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΏΠΎΡΡΠ»Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ASCII, Ρ. Π΅. ΡΠΎΠ»ΡΠΊΠΎ Π»Π°ΡΠΈΠ½ΡΠΊΠΈΠ΅ Π±ΡΠΊΠ²Ρ (ΠΏΠ΅ΡΠ²ΡΠ΅ 128 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Unicode). ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ, Ρ.ΠΊ. ΡΠ°ΡΡΠΎ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠ΅ΡΡΡ ΠΏΠΈΡΠ°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² ΠΏΠΎΠ»Π΅ Subject (ΡΠ΅ΠΌΠ° ΠΏΠΈΡΡΠΌΠ°) ΠΈΠ»ΠΈ Π² ΠΏΠΎΠ»ΡΡ From/To (ΠΈΠΌΡ ΠΈ Π°Π΄ΡΠ΅Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ/ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ) ΡΡΡΡΠΊΠΈΠΉ ΡΠ΅ΠΊΡΡ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π±ΡΠ» ΠΏΡΠΈΠ΄ΡΠΌΠ°Π½ ΡΡΠ°Π½Π΄Π°ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ MIME (RFC 2047). ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ»ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° (Π½Π΅ Π²ΠΎ Π²ΡΠ΅Ρ ) ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Base64 ΠΈΠ»ΠΈ QuotedPrintable).
ΠΠ»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΈΡΠ΅ΠΌ Π² JavaMail ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡ javax.mail.Message. ΠΡΠΎ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ, ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ ΠΆΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°ΠΌΠΈ. ΠΠ΅ΡΠΎΠ΄Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ Π² Π½ΡΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ Java-ΡΡΡΠΎΠΊΠ°ΠΌΠΈ (String). ΠΠ»Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² Internet ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ javax.mail.internet.MimeMessage, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΈΠΌΠΎ Π±Π°Π·ΠΎΠ²ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ, ΠΊΠΎΡΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΠΈΡΠ΅ΠΌ. ΠΠ»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ javax.mail.internet.MimeUtility. ΠΠ»Π°ΡΡ MimeMessage ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ°ΠΌ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ Π½Π΅ΠΌΡ Π΄Π»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ/ΡΠ°ΡΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ², Π½ΠΎ, Π΅ΡΠ»ΠΈ ΠΡ Π½Π°ΠΏΡΡΠΌΡΡ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΠ΅ΡΡ ΠΊ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌ (ΠΌΠ΅ΡΠΎΠ΄Ρ getHeader ()/setHeader ()/addHeader ()), ΡΠΎ Π΄Π»Ρ ΠΈΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ/ΡΠ°ΡΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΠ°ΠΌ ΠΏΡΠΈΠ΄ΡΡΡΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ MimeUtility ΡΠ°ΠΌΠΎΠΌΡ.
ΠΡΠ»ΠΈ ΠΡ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΠ΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ ΠΏΠΈΡΡΠΌΠ°, ΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ — ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ file. encoding, Π½ΠΎ Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΎΠΉ «mail.mime.charset ». ΠΡΠΎ ΡΠ°Π·ΡΠΌΠ½ΠΎ, Ρ.ΠΊ. ΡΠ°ΡΡΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ Internet. ΠΠ»Ρ ΡΡΡΡΠΊΠΎΡΠ·ΡΡΠ½ΡΡ ΠΏΠΈΡΠ΅ΠΌ Π² Internet ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π΄Π΅-ΡΠ°ΠΊΡΠΎ ΡΡΠ°Π»Π° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΠΠΠ-8. ΠΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ ΠΈ Π΄ΡΡΠ³ΡΡ, Π½ΠΎ ΡΠ°Π½Ρ, ΡΡΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ°Ρ ΡΡΠΎΡΠΎΠ½Π° Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΈΡΡΠΌΠΎ ΠΎΡΠ΅Π½Ρ Π²Π΅Π»ΠΈΠΊ.
ΠΠ°Π΄ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠ°ΠΊΠΆΠ΅, ΡΡΠΎ Π² JavaMail ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ Π΄Π²Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ° Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΎΠΊ — ΡΡΠ°Π½Π΄Π°ΡΡ MIME ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡ Java. ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΎΠΊ ΠΈΠΌΠ΅Π½Π° MIME ΡΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π² Java ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ «Cp1251 «(Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Java) ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌ «Windows-1251 «(Π½Π°Π·Π²Π°Π½ΠΈΠ΅ MIME). ΠΠ»Ρ ΡΠ΅Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΎΠΊ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΡ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ, ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π²Π½ΡΡΡΠΈ JavaMail. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ ΡΠ°ΠΉΠ» javamail.charset.map ΠΈΠ· ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° «/META-INF «ΠΈΠ· ΡΠΎΠ³ΠΎ jar-ΡΠ°ΠΉΠ»Π°, ΠΎΡΠΊΡΠ΄Π° Π±ΡΠ» Π·Π°Π³ΡΡΠΆΠ΅Π½ ΠΏΠ°ΠΊΠ΅Ρ JavaMail. ΠΠ»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² JavaMail ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ MIME-ΠΈΠΌΠ΅Π½Π°, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ (Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ Π½Π΅ ΡΠΎΠΆΠ΅ Java :-).
ΠΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΏΠΈΡΡΠΌΠ° ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ JavaMail:
import java.util.Properties;
import javax.mail.Session;
import javax.mail.Message;
import javax.mail.Transport;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.InternetAddress;
public class MailTest.
{.
static final String ENCODING = «koi8-r » ;
static final String FROM = «myaccount@mydomail.ru » ;
static final String TO = «myaccount@mydomail.ru » ;
public static void main (String args[]) throws Exception.
{.
Properties mailProps = new Properties ();
mailProps. put («mail.store.protocol », «pop3 »);
mailProps. put («mail.transport.protocol », «smtp »);
mailProps. put («mail.user », «myaccount »);
mailProps. put («mail.pop3.host », «mail.mydomail.ru »);
mailProps. put («mail.smtp.host », «mail.mydomail.ru »);
Session session = Session. getDefaultInstance (mailProps);
MimeMessage message = new MimeMessage (session);
message. setFrom (new InternetAddress (FROM));
message. setRecipient (Message.RecipientType.TO, new InternetAddress (TO));
message. setSubject («Π’Π΅ΡΡΠΎΠ²ΠΎΠ΅ ΠΏΠΈΡΡΠΌΠΎ », ENCODING);
message. setText («Π’Π΅ΠΊΡΡ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΈΡΡΠΌΠ° », ENCODING);
Transport. send (message);
}.
}.
XML/XSL.
ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠΎΡΠΌΠ°ΡΠ° XML ΠΎΡΠΎΠ±ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ΄Π΅Π»ΡΠ»ΠΎΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΎΠΊ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΠ»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠ°Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° Π±ΡΠ»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°. ΠΡΠΈΠΌΠ΅Ρ:
ΠΡΠ»ΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΡΠΊΠ°Π·Π°Π½Π° Π½Π΅ Π±ΡΠ»Π°, ΡΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° UTF-8. ΠΠ° XML-ΠΏΠ°ΡΡΠ΅Ρ Π²ΠΎΠ·Π»ΠΎΠΆΠ΅Π½Π° ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Unicode-ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². Π Π°Π·Π½ΡΠ΅ ΠΏΠ°ΡΡΠ΅ΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ Π½Π°Π±ΠΎΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΎΠΊ, Π½ΠΎ UTF-8 ΠΎΠ±ΡΠ·Π°Π½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π²ΡΠ΅. ΠΠ΄Π΅ΡΡ ΡΠ°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Ρ JavaMail Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΎΠΊ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ XML ΠΌΠΎΠ³ΡΡ ΡΠ°ΡΡ ΠΎΠ΄ΠΈΡΡΡ Ρ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ, ΠΏΡΠΈΠ½ΡΡΡΠΌΠΈ Π² Java. Π Π°Π·Π½ΡΠ΅ ΠΏΠ°ΡΡΠ΅ΡΡ ΠΏΠΎ ΡΠ°Π·Π½ΠΎΠΌΡ Π²ΡΡ ΠΎΠ΄ΡΡ ΠΈΠ· ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Crimson ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΊΠΎΠ»-Π²ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΠΎΠ², Π° Π² ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Π½Π° ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΎΠΊ ΠΈΠ· Java. Xerces ΠΆΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΠ°Π±Π»ΠΈΡΡ (ΠΊΠ»Π°ΡΡ org.apache.xerces.readers.MIME2Java), Π° Π΅ΡΠ»ΠΈ Π½Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΡΠ°ΠΌ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ, ΡΠΎ Π±ΡΠΎΡΠ°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎ Π½Π΅ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅. Π Xerces Π²Π΅ΡΡΠΈΠΈ 1.4.0 ΡΡΡΡΠΊΠΈΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΎΠΊ ΡΠ°ΠΌ Π²ΡΠ΅Π³ΠΎ Π΄Π²Π΅ — KOI8-R ΠΈ ISO-8859−5. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Ρ ΠΏΠ°ΡΡΠ΅ΡΠ° ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ feature «internet ΠΡΠ»ΠΈ ΡΡΠΎΡ feature ΡΠ°Π·ΡΠ΅ΡΡΠ½ (ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° setFeature ()), ΡΠΎ ΠΏΠ°ΡΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠΈΡΠΊΠ° Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΡΠ°ΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Java-Π²ΡΠΊΠΈΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Java-Π²ΡΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΎΠΊ. Π ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° SAX ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΈΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΠ°Π·ΠΎΠΌ (ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ JAXP):
SAXParserFactory parserFactory = SAXParserFactory. newInstance ();
SAXParser parser = parserFactory. newSAXParser ();
parser.getXMLReader ().setFeature («internet.
ΠΠ»Ρ DOM, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° feature-ΠΎΠ² Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΌΠ΅ΡΡΠΎ JAXP Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ DOM Π½Π°ΠΏΡΡΠΌΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡ org.apache.xerces.parsers.DOMParser, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΆΠ΅ Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ setFeature ().
ΠΡΠ»ΠΈ ΠΆΠ΅ Xerces ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅ Π½Π°ΠΏΡΡΠΌΡΡ, Π° ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΡΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ Π΄Π°Π±Ρ ΠΎΠ½ ΡΠ°ΠΌ Π²ΡΡΡΠ°Π²Π»ΡΠ» ΡΡΠΎΡ feature. ΠΡΠ»ΠΈ ΠΆΠ΅ ΡΠ°ΠΊΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ΠΎ, ΡΠΎ ΠΎΡΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π²ΡΡ ΠΎΠ΄ — ΠΏΡΠ°Π²ΠΈΡΡ ΡΡΡΠΊΠ°ΠΌΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΏΡΠ°Π²ΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΎΠΊ Π² ΠΊΠ»Π°ΡΡΠ΅ org.apache.xerces.readers.MIME2Java ΠΈΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ feature ΠΊΠ°ΠΊ true ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΠ»Ρ ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° XML ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠ° Π΄Π°Π½Π½ΡΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡ org.xml.sax.InputSource. Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ°ΠΌ ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΈΠ»ΠΈ Π² Π²ΠΈΠ΄Π΅ Π±Π°ΠΉΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° (java.io.InputStream) ΠΈΠ»ΠΈ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (java.io.Reader). Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ Π²ΠΎΠ·Π»Π°Π³Π°Π΅ΡΡΡ ΠΈΠ»ΠΈ Π½Π° ΠΏΠ°ΡΡΠ΅Ρ ΠΈΠ»ΠΈ Π½Π° ΡΠΎΠ³ΠΎ, ΠΊΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Reader. Π£ ΠΊΠ»Π°ΡΡΠ° InputSource Π΅ΡΡΡ ΡΠ°ΠΊ ΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄ setEncoding (), ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ Π·Π°Π΄Π°ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ Π² ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ° Π±Π°ΠΉΡΠΎΠ².
Π Π°Π±ΠΎΡΠ°Π΅Ρ ΡΡΠΎ Π²ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΡΠ»ΠΈ Π±ΡΠ» Π·Π°Π΄Π°Π½ ΠΏΠΎΡΠΎΠΊ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (Reader), ΡΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ . ΠΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½Π°Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ setEncoding () ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ ΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°, ΡΠΊΠ°Π·Π°Π½Π½Π°Ρ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°.
ΠΡΠ»ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π±ΡΠ» Π·Π°Π΄Π°Π½ ΠΏΠΎΡΠΎΠΊ Π±Π°ΠΉΡΠΎΠ² (InputStream), ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠ½. ΠΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ setEncoding (), ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠ½Π°, Π° Π΅ΡΠ»ΠΈ Π½Π΅Ρ — ΡΠΎ ΠΏΠ°ΡΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ, ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°.
ΠΡΠ»ΠΈ ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°ΡΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΎΠΉ ΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΎΠΉ ΠΈΠ· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, ΡΠΎ ΠΏΠ°ΡΡΠ΅ΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ ΠΏΠΎ ΡΠ°Π·Π½ΠΎΠΌΡ. Crimson, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΡΡΠΎΠΌ Π²ΡΠ΄Π°ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π° Xerces ΠΌΠΎΠ»ΡΠ° ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ.
Π‘ ΡΡΠ΅Π½ΠΈΠ΅ΠΌ XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΡ ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΠΈΡΡ, ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ ΠΊ ΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ. ΠΠ΄ΠΈΠ½ΠΎΠ³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ° Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ², Π² ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ ΡΡΠ΅Π½ΠΈΡ, ΠΏΠΎΠΊΠ° Π½Π΅Ρ. ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ, ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ Π²Π΅ΡΡΠΈΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΉ ΠΊΠΎΠΌΠΈΡΠ΅ΡΠ° W3C Π±ΡΠ΄Π΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ², Π½ΠΎ ΠΏΠΎΠΊΠ° ΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ ΠΏΠ°ΡΡΠ΅ΡΠΎΠ² Π΄Π΅Π»Π°ΡΡ ΠΊΡΠΎ Π²ΠΎ ΡΡΠΎ Π³ΠΎΡΠ°Π·Π΄.
Π ΡΠ»ΡΡΠ°Π΅ Ρ Crimson ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ DOM ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° write () Ρ ΠΊΠ»Π°ΡΡΠ° org.apache.crimson.tree.XmlDocument. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠΊ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (Writer) ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠΊ Π±Π°ΠΉΡΠΎΠ² (OutputStream). ΠΠΌΠ΅ΡΡΠ΅ Ρ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ. ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΠΏΠΎΡΠΎΠΊ Π±Π°ΠΉΡΠΎΠ², Π° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΡΠΊΠ°Π·Π°Π½Π° Π½Π΅ Π±ΡΠ»Π°, ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ UTF-8. ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΠΏΠΎΡΠΎΠΊ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ, ΡΠΎ ΠΈΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°. ΠΡΠ»ΠΈ Writer ΠΏΠ΅ΡΠ΅Π΄Π°Π½ Π±Π΅Π· ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ, ΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° — Π΅ΡΠ»ΠΈ ΡΡΠΎ ΡΠΊΠ·Π΅ΠΌΠ»ΡΡ OutputStreamWriter, ΡΠΎ Π΄Π»Ρ Π²ΡΡΡΠ½Π΅Π½ΠΈΡ ΡΡΠΎ ΠΏΠΈΡΠ°ΡΡ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π·ΠΎΠ²ΡΡΡΡ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ getEncoding (). ΠΡΠ»ΠΈ ΠΆΠ΅ ΡΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ Writer, ΡΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π·Π°ΠΏΠΈΡΠ°Π½Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ, ΡΡΠΎ ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΡ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ UTF-8. ΠΡΠΈΠΌΠ΅Ρ:
XmlDocument doc = …;
OutputStream os = …;
doc.write (os, «Windows-1251 »);
Π Xerces Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠ»Π°ΡΡΡ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ° org.apache.xml.serialize. Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡ XMLSerializer, Π° Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° — ΠΊΠ»Π°ΡΡ OutputFormat. Π ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ XMLSerializer ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΡΠΎΠΊΠΈ Π±Π°ΠΉΡΠΎΠ², ΡΠ°ΠΊ ΠΈ ΠΏΠΎΡΠΎΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². Π ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π² OutputFormat. ΠΠ°ΠΆΠ½ΠΎ Π½Π΅ Π·Π°Π±ΡΡΡ Π·Π°Π΄Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ Π² OutputFormat — Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΡΡΠΊΠΈΠ΅ Π±ΡΠΊΠ²Ρ Π±ΡΠ΄ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ΄ΠΎΠ², ΡΠΈΠΏΠ° ΡΠ°ΠΊΠΎΠ³ΠΎ: «ΠΠΠ «Π΄Π»Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² «ΠΠΠ ». ΠΡΠΈΠΌΠ΅Ρ:
OutputStream os = …;
OutputFormat format = new OutputFormat (Method.XML, «Windows-1251 », true).
XMLSerializer serializer = new XMLSerializer (os, format);
serializer.serialize (doc);
Castor XML.
ΠΠ°ΠΊΠ΅Ρ Castor ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π΄ΠΎΠ»Π³ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². Π ΡΠΈΡΠ»Π΅ ΠΏΡΠΎΡΠ΅Π³ΠΎ ΠΎΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ Castor XML, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎ ΡΡΡΠΈ Π΄Π΅Π»Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠΎΠΉ Π½Π°Π΄ XML-ΠΏΠ°ΡΡΠ΅ΡΠΎΠΌ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡ XML-ΡΠ°ΠΉΠ»ΠΎΠ². Castor XML ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΠ°ΡΡΠ΅Ρ Xerces, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Xerces ΠΏΠ΅ΡΠ΅ΠΊΠΎΡΡΠ²ΡΠ²Π°ΡΡ ΠΈ ΡΡΠ΄Π°. Π Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ Castor Π² ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΠΎΡΠΎΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (Reader ΠΈ Writer), Π° ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠ°ΡΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Π² ΠΏΠΎΡΠΎΠΊΠ΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ XML-ΡΠ°ΠΉΠ»Π°. ΠΠ°ΠΊ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ Π²ΡΡΠ΅, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Xerces XML-ΡΠ°ΠΉΠ» Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅ Π½ΡΠΆΠ½ΠΎ, Π²ΠΎ ΠΏΠ΅ΡΠ²ΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠΎΠΊΠΈ Π±Π°ΠΉΡΠΎΠ², Π° Π²ΠΎ Π²ΡΠΎΡΡΡ , ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ feature. Π ΡΡΠ°ΡΡΡΡ ΡΡΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° Π² Castor. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» castor. properties (Π²Π·ΡΡΡ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ· ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° orgexolabcastor Π² ΡΠ°ΠΉΠ»Π΅ castor-0.9.3-xml.jar) Π² ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ lib Π² JRE, ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ°ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ org.exolab.castor.sax.features. ΠΡΠΈΠΌΠ΅Ρ:
# Comma separated list of SAX 2 features that should be enabled.
# for the default parser.
#.
#org.exolab.castor.features=.
org.exolab.castor.sax.features=internet.
Π‘ΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°ΠΌ ΡΡΠΎΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ org.exolab.castor.features, Π½ΠΎ ΡΡΠΎ, ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΠΎΠΏΠ΅ΡΠ°ΡΠΊΠ° — Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ, ΡΠΎ ΡΠ°ΠΌ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ org.exolab.castor.sax.features (ΡΡΠΎ ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ Π΄Π»Ρ Castor Π²Π΅ΡΡΠΈΠΈ 0.9.3 ΠΎΡ 03.07.2001). ΠΡΠΈΠΌΠ΅Ρ ΡΡΠ΅Π½ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π±Π°ΠΉΡΠΎΠ²:
public static Object load (Class cls, String mappingFile, InputStream is).
throws Exception.
{.
Mapping mapping = loadMapping (cls, mappingFile);
Unmarshaller unmarshaller = new Unmarshaller (cls);
unmarshaller. setMapping (mapping);
return unmarshaller. unmarshal (new InputSource (is));
}.
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ XML-ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΎΡΠΌΠ°Ρ Π΄Π»Ρ Xerces. ΠΡΠΈΠΌΠ΅Ρ:
public static void save (Object obj, String mappingFile, OutputStream os, String encoding).
throws Exception.
{.
Mapping mapping = loadMapping (obj.getClass (), mappingFile);
try.
{.
XMLSerializer serializer = new XMLSerializer (os, new OutputFormat (Method.XML, encoding, true));
Marshaller marshaller = new Marshaller (serializer);
marshaller. setMapping (mapping);
marshaller. marshal (obj);
}.
finally { os. flush (); }.
}.
ΠΠ»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Π° Π² ΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:
private static Mapping loadMapping (Class cls, String mappingFile).
throws Exception.
{.
ClassLoader loader = cls. getClassLoader ();
Mapping mapping = new Mapping (loader);
mapping. loadMapping (new InputSource (loader.getResourceAsStream (mappingFile)));
return mapping;
}.
XSL
Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ XSL ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡ Π½Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠΎΠ³Π΄Π° ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ XSL Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π² Π΄ΡΡΠ³ΠΎΠΉ, ΠΎΡΠΎΠ±ΡΡ ΠΏΡΠΈΡΠΈΠ½ Π΄Π»Ρ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡΡΠ²Π° Π½Π΅Ρ — ΠΈ ΡΠΎΡ ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ²Π»ΡΡΡΡΡ Unicode-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈΠ· ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² Π±Π°ΠΉΡΡ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ, ΠΌΠΎΠ³ΡΡΠΈΡ ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. ΠΡΡΠ³ΠΎΠ΅ Π΄Π΅Π»ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· XML Π² HTML ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ». Π€ΠΎΡΠΌΠ°Ρ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π·Π°Π΄Π°ΡΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΎΠΉ ΡΠ΅Π³Π° xsl: output, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ. ΠΡΠΈΠΌΠ΅Ρ:
ΠΡΠ»ΠΈ XSLT-ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π½Π΅ Π·Π½Π°Π΅Ρ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ, ΡΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ»ΠΈ Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ UTF-8 (ΠΈΠ»ΠΈ UTF-16). ΠΡΠ»ΠΈ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ HTML, ΡΠΎ XSLT-ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ΅Π³ meta, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·Π°Π½Π° ΡΠ΅Π°Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½Π°Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°:
ΠΡΡ Π±Ρ Ρ ΠΎΡΠΎΡΠΎ, Π½ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ XSLT-ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠΉ ΡΠ΅Π³ (ΠΏΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΎΠ½ΠΈ ΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°Π½Ρ). Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΠΏΠ°ΠΊΠ΅Ρ Cocoon Π΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ, Ρ.ΠΊ. ΠΏΠΎ ΡΠ»ΠΎΠ²Π°ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΎΠ½ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° cocoon-format. ΠΡΠΈΠΌΠ΅Ρ Π²ΡΡΠ°Π²ΠΊΠΈ ΡΡΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π² XSL:
type= «text/html «.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠ΅Π½ΡΡΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΎΡΠΌΠ°Ρ. ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ (Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅):
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π² ΡΠ°ΠΉΠ»Π΅ cocoon.properties.
ΠΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Cocoon 2.0 ΠΊΡΠΎΠΌΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π² ΠΏΠ»Π°Π½Π΅ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΆΠ΅ Π³Π°ΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»ΡΡΠ΅. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ·Π½Π°ΡΡ Π½Π° ΠΈΡ ΡΠ°ΠΉΡΠ΅.
Π ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ JAXP Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° (ΠΏΠ°ΠΊΠ΅Ρ javax.xml.transform) ΠΊΡΠΎΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π³Π° xsl: output ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ setOutputProperty ΠΎΠ±ΡΠ΅ΠΊΡΠ° Transformer. ΠΡΠΈΠΌΠ΅Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π² Π½ΡΠΆΠ½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅:
TransformerFactory trFactory = TransformerFactory. newInstance ();
Transformer transformer = trFactory. newTransformer ();
transformer.setOutputProperty (OutputKeys.DOCTYPE_PUBLIC, docPublic);
transformer.setOutputProperty (OutputKeys.DOCTYPE_SYSTEM, docSystem);
transformer.setOutputProperty (OutputKeys.INDENT, «yes »);
transformer.setOutputProperty (OutputKeys.ENCODING, encoding);
OutputStream os = …;
StreamResult result = new StreamResult (os);
transformer.transform (source, result);
Π’ΡΡ Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠΉ ΠΊΠ°ΠΌΠ΅Π½Ρ — ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Transformer Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π½ΡΠΆΠ½ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ. Xalan ΠΈΠ· ΡΠΎΡΡΠ°Π²Π° JDK 1.4.0_x ΠΈ 1.4.1_x ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²Π΅ ΡΡΡΡΠΊΠΈΠ΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ — KOI8-R ΠΈ ISO-8859−5. ΠΡΠ»ΠΈ Ρ ΠΎΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Windows-1251, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ endorsed:
Π‘ΠΎΠ·Π΄Π°ΡΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ %JAVA_HOME%jrelibendorsed.
ΠΠΎΠΏΠΈΡΡΠ΅ΡΠ΅ ΡΡΠ΄Π° jar Ρ ΠΏΡΠΎΠΏΠ°ΡΡΠ΅Π½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ: XalanRusChars.jar.
Π JDK 1.4.2 Beta Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Xalan, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΎΠ΄Π΅ ΠΊΠ°ΠΊ ΡΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ 1251.
FOP.
ΠΠ°ΠΊΠ΅Ρ FOP ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΡ XSL FO (Formating Objects). Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ PDF-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ Π½Π° Π±Π°Π·Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² XML. ΠΠ»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ XML Π² FO ΠΏΠ°ΠΊΠ΅Ρ FOP ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ XSLT-ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Xalan Π² ΠΏΠ°ΡΠ΅ Ρ Xerces. ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² FOP Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΡΡΠΈΡΡΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠ΅ ΡΡΡΡΠΊΠΈΠ΅ Π±ΡΠΊΠ²Ρ. ΠΠΎΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π΄Π»Ρ Π²Π΅ΡΡΠΈΠΈ 0.20.1:
Π ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ conffonts (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² c: fop-0.20.1conffonts) ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ ttf ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Windows. ΠΠ»Ρ Arial normal/normal, normal/bold, italic/normal ΠΈ italic/bold Π½ΡΠΆΠ½Ρ ΡΠ°ΠΉΠ»Ρ arial. ttf, arialbd. ttf, ariali. ttf ΠΈ arialbi.ttf.
Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ ΡΡΠΈΡΡΠΎΠ² (ΡΠΈΠΏΠ° arial. xml). ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΠΈΡΡΠ° Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ (ΡΡΠΎ Π΄Π»Ρ Arial normal/normal, Π²ΡΡ Π² ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ):
javacp .;c:fop-0.20.1buildfop.jar;c:fop-0.20.1libbatik.jar;
c: fop-0.20.1libxalan-2.0.0.jar;c:fop-0.20.1libxerces.jar;
c: fop-0.20.1libjimi-1.0.jar.
org.apache.fop.fonts.apps.TTFReader fontsarial. ttf fontsarial.xml.
Π FOP Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² conf/userconfig.xml ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠΈΡΡΠ° Ρ ΡΡΡΡΠΊΠΈΠΌΠΈ Π±ΡΠΊΠ²Π°ΠΌΠΈ, ΡΠΈΠΏΠ°:
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Arial normal/bold, italic/normal ΠΈ italic/bold.
ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ FOP ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΏΠΎΡΠ»Π΅ org.apache.fop.apps.Fop ΠΏΠΈΡΠ°ΡΡc c: fop-0.20.1confuserconfig.xml ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ FOP ΠΈΠ· ΡΠ΅ΡΠ²Π»Π΅ΡΠ°, ΡΠΎ Π½ΡΠΆΠ½ΠΎ Π² ΡΠ΅ΡΠ²Π»Π΅ΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΡΡΠΎΡΠΊΠΈ.
Driver driver = new Driver ();
Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡΠΎΡΠΊΠΈ:
// ΠΠ°ΡΠ°Π»ΠΎΠ³ fonts (c:weblogicfonts) Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π°.
String userConfig = «fonts/userconfig.xml » ;
File userConfigFile = new File (userConfig);
Options options = new Options (userConfigFile);
Π’ΠΎΠ³Π΄Π° ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ttf Π² ΡΠ°ΠΉΠ»Π΅ userconfig. xml ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠΎΡΠ½Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ:
Π ΡΠ°ΠΉΠ»Π΅ FO (ΠΈΠ»ΠΈ XML ΠΈ XSL) ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠΈΡΡΠ° ΠΏΠΈΡΠ°ΡΡ:
font-family= «Arial «.
font-weight= «bold «(ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Arial bold).
font-style= «italic «(ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Arial italic).
ΠΠ°Π½Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠΈΡΠ»Π°Π» ΠΠ»Π΅ΠΊΡΠ΅ΠΉ Π’ΡΡΠΈΠ½, Π·Π° ΡΡΠΎ Π΅ΠΌΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ.
ΠΡΠ»ΠΈ ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π² FOP ΠΏΡΠΎΡΠΌΠΎΡΡΡΠΈΠΊ, ΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠ΅ΡΡΡ Π΅Π³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Ρ ΠΎΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ Π½Π°Π΄ΠΏΠΈΡΠΈ Π² Π½ΡΠΌ ΡΡΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Ρ, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΡΡΠΎ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ (Π² Π²Π΅ΡΡΠΈΠΈ 0.19.0). ΠΠ»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π°Π΄ΠΏΠΈΡΠ΅ΠΉ ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ΅ΡΡΡΡΠΎΠ² Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ org.apache.fop.viewer.resources ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ (ΠΊΠ»Π°ΡΡ org.apache.fop.viewer.LoadableProperties). ΠΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΠΌ ΠΆΡΡΡΠΊΠΎ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π° (88591, ΠΊΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Properties. load ()), ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π·Π°ΠΏΠΈΡΠΈ Π²ΠΈΠ΄Π° «uXXXX «Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π°. Π― ΡΠΎΠΎΠ±ΡΠΈΠ» ΠΎΠ± ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ, ΠΎΠ½ΠΈ Π²ΠΊΠ»ΡΡΠΈΠ»ΠΈ Π΅Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΡΠ²ΠΎΠΈ ΠΏΠ»Π°Π½Ρ.
ΠΡΠΎΠΌΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅Π³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΉΡ ΠΏΠΎΡΠ²ΡΡΡΠ½Π½ΡΠΉ ΡΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ FOP (internet Π’Π°ΠΌ ΠΡ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² FOP Ρ ΡΠΆΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΌΠΈ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌΠΈ ΡΡΡΡΠΊΠΈΠΌΠΈ ΡΡΠΈΡΡΠ°ΠΌΠΈ.
POI.
ΠΠ°ΠΊΠ΅Ρ Jakarta POI ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Microsoft Office. ΠΠΎΠΊΠ° ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΉ ΡΠ°ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² MS Excel (xls). ΠΡΠΎΠ±ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π² ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΡΡΡΠΊΠΈΠΌ ΡΠ·ΡΠΊΠΎΠΌ Π½Π΅Ρ, Π½ΠΎ Π½Π°Π΄ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ Π½ΡΠ°Π½Ρ, ΡΡΠΎ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΠ΅ΠΊΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡ org.apache.poi.hssf.usermodel.Cell, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ setEncoding (short encoding), ΠΎΠ΄Π½Π°ΠΊΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΈΠ²ΡΡΠ½ΡΡ «Cp1255 «ΠΈ «Cp866 », Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ENCODING_COMPRESSED_UNICODE (0) ΠΈ ENCODING_UTF16 (1). ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ΅Π½ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ, Π° Π΄Π»Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΡΡΠΊΠΈΠΌ ΡΠ·ΡΠΊΠΎΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ENCODING_UTF16. ΠΡΠΈΡΠ΅ΠΌ ΡΡΠΎ ΡΠ°ΠΌΠΎΠ΅ Π²Π°ΠΆΠ½ΠΎΠ΅, ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ ΡΡΠ΅ΠΉΠΊΠΈ. ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
HSSFWorkbook wb = new HSSFWorkbook ();
HSSFSheet sheet = wb. createSheet («Sheet1 »);
HSSFRow row = sheet. createRow ((short)0);
for (int i = 0; i < 10; i++).
{.
HSSFCell cell = row. createCell ((short)i);
cell. setEncoding ((short)cell.ENCODING_UTF16);
cell. setCellValue («Π’Π΅ΡΡ ΡΡΡΡΠΊΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° »);
}.
Π‘ΠΎΠ·Π΄Π°ΡΡ Π»ΠΈΡΡ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌ ΡΡΡΡΠΊΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π΅ ΡΠ΄Π°ΡΡΡΡ. ΠΠ°Π½Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΈΡΠ»Π°Π» ΠΡΡΠ΅ΡΠ»Π°Π² Π―ΠΊΠΎΠ²Π΅Π½ΠΊΠΎ, Π·Π° ΡΡΠΎ Π΅ΠΌΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ.
CORBA.
Π ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ CORBA ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ ΡΠΈΠΏ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Java-ΠΎΠ²ΡΠΊΠΎΠΌΡ ΡΠΈΠΏΡ String. ΠΡΠΎ ΡΠΈΠΏ wstring. ΠΡΡ Π±Ρ Ρ ΠΎΡΠΎΡΠΎ, Π½ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ CORBA-ΡΠ΅ΡΠ²Π΅ΡΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅ΡΠ΅. Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠ΅ ΠΏΡΠΈ ΡΠΏΠΎΡΡΠΊΠ°Π½ΠΈΠΈ Π½Π° ΡΡΡΡΠΊΠΈΡ Π±ΡΠΊΠ²Π°Ρ : org.omg.CORBA.MARSHAL: minor code 5 completed No ΠΈΠ»ΠΈ org.omg.CORBA.DATA_CONVERSION. ΠΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π·Π°ΠΌΠ΅Π½ΠΈΡΡ CORBA-ΡΠ΅ΡΠ²Π΅Ρ. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΡΠΊΠ°Π·Π°ΡΡ, Ρ ΠΊΠ°ΠΊΠΈΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π΅ Π±ΡΠ΄Π΅Ρ. ΠΡΠ»ΠΈ ΡΠΌΠ΅Π½ΠΈΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΈΠΏΠ° wstring ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠΏ string Π² ΠΏΠ°ΡΠ΅ Ρ Π½Π°ΡΠΈΠΌ Π»ΡΠ±ΠΈΠΌΡΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ:
// Π‘Π΅ΡΠ²Π΅ΡΠ½Π°Ρ ΡΠ°ΡΡΡ.
a = new Answer (new String (src.getBytes («Cp1251 »), «ISO-8859−1 »));
…
// ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°Ρ ΡΠ°ΡΡΡ.
Answer answer=serverRef.getAnswer ();
res = new String (answer.msg.getBytes («ISO-8859−1 »), «Cp1251 »);
Π’ΠΈΠΏ wstring ΠΏΡΠΈ ΡΡΠΎΠΌ Π»ΡΡΡΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΠΊΠ°ΠΊ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΡ ΠΊΡΠΈΠ²ΠΎΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ° Π±ΡΠ΄Π΅ΡΠ΅ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΡΠΈΠ²ΠΎΡΡΡΡ ΡΠ²ΠΎΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², Π° ΡΡΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅Π³Π΄Π° ΡΡΠ΅Π²Π°ΡΠΎ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ.
ΠΠΌΠ΅ΡΡΠΎ Cp1251 ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ ΡΡΡΡΠΊΠΈΡ Π±ΡΠΊΠ², ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡ. ΠΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡΡΡ ΡΡΡΠΎΠΊΠΈ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ . Π’Π°ΠΊΠΆΠ΅, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ, Π΅ΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΡΠ·Ρ Ρ Π³ΠΎΡΠΎΠ²ΡΠΌΠΈ Π½Π΅-Java ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠΈΠΏ string.
Π§Π΅ΡΡΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, Π½Π΅ Π»Π΅ΠΆΠΈΡ Ρ ΠΌΠ΅Π½Ρ Π΄ΡΡΠ° ΠΊ ΡΠ°ΠΊΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌ, Π½Ρ Π΄Π° ΡΡΠΎ ΠΏΠΎΠ΄Π΅Π»Π°Π΅ΡΡ, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ½ΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅.
JNI.
JNI (Java Native Interface) — ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡ ΠΏΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ C/C+±Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΠ°ΠΊ ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π»ΠΎ ΠΎΠΆΠΈΠ΄Π°ΡΡ, Π½Π° ΡΡΠΎΠΌ Π²ΠΎΠ΄ΠΎΡΠ°Π·Π΄Π΅Π»Π΅ ΡΠΎΠΆΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ Π±Π°ΠΉΡΠΎΠ² ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ C/C+±Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΏΠΈΡΠ΅ΡΡΡ Π±Π΅Π· ΡΡΡΡΠ° Unicode, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π΄Π°ΠΆΠ΅ Π½Π΅ Π·Π½Π°ΡΡ ΠΎ Π½ΡΠΌ. Π― ΡΠ°ΠΌ, Π·Π° 7 Π»Π΅Ρ ΠΏΠΈΡΠ°ΡΠ΅Π»ΡΡΡΠ²Π° Π½Π° C/C++, ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΡΠ°Π» ΠΏΠΈΡΠ°ΡΡ Π½Π° Java, ΠΏΡΠΎ Unicode Π·Π½Π°Π» ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ Π½Π°ΡΠ»ΡΡΠΊΠ΅. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² C/C++ ΡΠ΄Π΅Π»Π°Π½Ρ Π΄Π»Ρ 8-Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° char. Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄Π²ΠΈΠΆΠΊΠΈ Π² ΡΡΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ Windows NT ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ Unicode-Π²Π°ΡΠΈΠ°Π½ΡΠ°ΠΌΠΈ Win32 API, Π½ΠΎ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΡΠΎΠ³ΠΎ ΡΠ°ΡΡΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π³Π»Π°Π²Π½Π°Ρ Π·Π°Π΄Π°ΡΠ° — ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΈΠΏ char* ΠΈΠ· ΡΠΈΠΏΠ° jstring (JNI-ΡΠ½ΠΎΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ String) ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΎ Π²ΡΠ΅Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡΡ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ JNI Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΉ GetStringUTFChars ()/ReleaseStringUTFChars (). ΠΠΎΠ²Π°ΡΠ½ΡΠ΅ Π±ΡΡΠΆΡΠΈΠ½Ρ ΠΈ Π·Π΄Π΅ΡΡ ΠΏΡΠΈΠ³ΠΎΡΠΎΠ²ΠΈΠ»ΠΈ Π·Π°ΡΠ°Π΄Ρ — ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΡΠΌΠΈΡΡΡΡ ΠΌΠ°ΡΡΠΈΠ² Π±Π°ΠΉΡΠΎΠ² ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΡ UTF, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ASCII-ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (ΠΏΠ΅ΡΠ²ΡΡ 128 Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ). Π ΡΡΡΠΊΠΈΠ΅ Π±ΡΠΊΠ²Ρ ΠΎΠΏΡΡΡ Π² ΠΏΡΠΎΠ»ΡΡΠ΅. Π‘ΠΈΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ char* ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ Π»ΠΎΠΆΠ°ΡΡΡ Π½Π° Java-ΠΎΠ²ΡΠΊΠΈΠΉ ΡΠΈΠΏ byte[], Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π·Π°Π³Π²ΠΎΠ·Π΄ΠΊΠ° Π² Π²ΠΈΠ΄Π΅ Π½ΠΎΠ»Ρ-ΡΠΈΠΌΠ²ΠΎΠ»Π°. ΠΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΡΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ byte[]->char* ΠΈ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΡΠΈΠΌΠ΅Ρ:
public void action (String msg) throws java.io.IOException.
{.
int res = nAction (msg);
if (res≠0) throw new java.io.IOException (nGetErrorString (res));
}.
private native int nAction (String msg);
private native String nGetErrorString (int error);
…
jbyteArray getStringBytes (JNIEnv *env, jstring str).
{.
if (!str) return NULL;
jmethodID getBytes = env->GetMethodID (env->GetObjectClass (str), «getBytes », «()[B »);
jbyteArray buf = (jbyteArray)env->CallObjectMethod (str, getBytes);
if (!buf) return NULL;
// ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π½ΠΎΠ»Ρ-ΡΠΈΠΌΠ²ΠΎΠ».
jsize len = env->GetArrayLength (buf);
jbyteArray nbuf = env->NewByteArray (len+1);
if (len≠0).
{.
jbyte *cbuf = env->GetByteArrayElements (buf, NULL);
env->SetByteArrayRegion (nbuf, 0, len, cbuf);
env->ReleaseByteArrayElements (buf, cbuf, JNI_ABORT);
}.
env->DeleteLocalRef (buf);
return nbuf;
}.
JNIEXPORT jint JNICALL Java_Test_nAction.
(JNIEnv *env, jobject obj, jstring msg).
{.
jbyteArray bmsg = getStringBytes (env, msg);
if (!bmsg) return -1;
jbyte *cmsg = env->GetByteArrayElements (bmsg, NULL);
printf (cmsg);
jint res = do_something (cmsg);
env->ReleaseByteArrayElements (bmsg, cmsg, JNI_ABORT);
return res;
}.
jstring newString (JNIEnv *env, jbyteArray jbuf, int len).
{.
jclass stringClass = env->FindClass («java/lang/String »);
if (!stringClass) return NULL;
jmethodID init = env->GetMethodID (stringClass, «», «([BII)V »);
if (!init) return NULL;
return (jstring)env->NewObject (stringClass, init, jbuf, 0, len);
}.
jstring newString (JNIEnv *env, const char *buf).
{.
if (!buf) return NULL;
int bufLen = strlen (buf);
if (bufLen==0).
{.
return env->NewString ((const jchar *)L «», 0);
}.
jbyteArray jbuf = env->NewByteArray (bufLen);
if (!jbuf) return NULL;
env->SetByteArrayRegion (jbuf, 0, bufLen,(jbyte*)buf);
jstring jstr = newString (env, jbuf, bufLen);
env->DeleteLocalRef (jbuf);
return jstr;
}.
JNIEXPORT jstring JNICALL Java_Test_nGetErrorString.
(JNIEnv *env, jobject obj, jint error).
{.
char cmsg[256];
memset (cmsg, 0, sizeof (cmsg));
get_error_string (error, cmsg, sizeof (cmsg));
return newString (env, cmsg);
}.
Π’ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΡΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡΡ Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ API. ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½Π°Ρ ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ ΡΡΡΠ°Π½ΠΈΡΠ°, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅.
GUI (AWT, Swing).
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ ΡΡΡΡΠΊΠΈΡ Π±ΡΠΊΠ² Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ ΡΡΠΈΡΡΠ°. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π² Java Π²ΡΡ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΠΈ ΡΠ΅Π΄ΠΊΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½Π½ΠΎ ΡΠΎ ΡΡΠΈΡΡΠ°ΠΌΠΈ.
ΠΠ΄Π΅ ΠΆΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»Π΅ΠΆΠ°Ρ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠ΅ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°ΠΌΠ½ΠΈ? Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½Π½ΠΎ Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². Π§Π°ΡΡΡ ΡΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠΏΠΈΡΠ°Π½Ρ Π²ΡΡΠ΅. ΠΡΠ»ΠΈ Ρ ΠΠ°Ρ Π²ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ, ΠΈ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠΈΡΡ Unicode, ΡΠΎ Π΅ΡΡΡ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ°Π½Ρ, ΡΡΠΎ ΠΠ°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.
ΠΡΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π²ΡΡ ΠΆΠ΅ ΠΎΡΡΠ°Π»ΠΈΡΡ, ΡΡΡ Π½ΡΠΆΠ½ΠΎ Π²ΡΡΡΠ½ΠΈΡΡ, Π³Π΄Π΅ ΠΎΠ½ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ ΡΠ°Π·Π½ΡΠΌΠΈ JVM, ΠΏΠΎΠ΄ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΠΌΠΈ, Π½Π° ΡΠ°Π·Π½ΡΡ Π±ΡΠΎΡΠ·Π΅ΡΠ°Ρ . ΠΡΠΈΠΌΠ΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΏΠΎΠΈΡΠΊΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π½ΠΈΠΆΠ΅, Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½ΠΈΠ³Π΄Π΅ — Π·Π½Π°ΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΎΠ»ΡΠΊΠΎ Π² Π½Π΅ΠΉ ΠΈ Π² ΠΠ°ΡΠΈΡ ΡΡΠΊΠ°Ρ . ΠΠ½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ°ΠΉΡΠ΅ Π²ΡΡ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅, ΠΈ ΠΈΡΠΈΡΠ΅. ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ — Π·Π½Π°ΡΠΈΡ Π΄Π΅Π»ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ . ΠΠ΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ — Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ ΠΡ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ΡΡ. ΠΡΠ»ΠΈ AWT — ΠΏΠΎΠΌΠΎΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ°ΠΉΠ»Π° font.properties.ru. ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡΡ ΠΈΠ· Java 2. ΠΡΠ»ΠΈ Ρ ΠΠ°Ρ Π½Π΅Ρ ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°ΡΠ°ΡΡ Π΅Π³ΠΎ Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ°: Π²Π΅ΡΡΠΈΡ Π΄Π»Ρ Windows, Π²Π΅ΡΡΠΈΡ Π΄Π»Ρ Linux (ΡΠΌ. ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·Π΄Π΅Π» ΠΏΠΎ Linux Π½ΠΈΠΆΠ΅). ΠΡΠΎΡ ΡΠ°ΠΉΠ» Π·Π°Π΄Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΡΠΈΡΡΡ ΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ. ΠΡΠ»ΠΈ Ρ ΠΠ°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ΡΡΡΡΠΊΠ°Ρ Π²Π΅ΡΡΠΈΡ OS — ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΠΎΡ ΡΠ°ΠΉΠ» ΡΡΠ΄Π°, Π³Π΄Π΅ Π»Π΅ΠΆΠΈΡ ΡΠ°ΠΉΠ» font.properties. ΠΡΠ»ΠΈ ΠΆΠ΅ ΡΡΠΎ Π°Π½Π³Π»ΠΈΡΠΊΠ°Ρ Π²Π΅ΡΡΠΈΡ, ΡΠΎ Π½ΡΠΆΠ½ΠΎ, ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΡΡΠΎΡ ΡΠ°ΠΉΠ» Π²ΠΌΠ΅ΡΡΠΎ font. properties ΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ΠΊΡΡΠΈΠ΅ ΡΠ΅Π³ΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π° ΡΡΡΡΠΊΠΈΠ΅. ΠΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Duser. language=ru, Π½ΠΎ ΡΠ°ΡΠ΅ — Π½Π΅Ρ. Π’ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ΅ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΡΠΎ ΠΈ Ρ file. encoding — ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΠ»ΠΈ Π½Π΅Ρ, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ JDK (ΡΠΌ. ΠΎΡΠΈΠ±ΠΊΡ Π·Π° Π½ΠΎΠΌΠ΅ΡΠΎΠΌ 4 152 725).
ΠΡΠ»ΠΈ ΠΊΡΠΎΠΌΠ΅ ΡΡΡΡΠΊΠΈΡ Π±ΡΠΊΠ² ΠΠ°ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π΄ΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, Π³ΡΠ΅ΡΠ΅ΡΠΊΠΈΠ΅, ΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΡ ΠΊΠΎΠ΄Π°. Π Π°Π±ΠΎΡΠ°Π΅Ρ Π²ΡΡ ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ:
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² AWT ΠΈ Swing ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠΈΡΡΡ, Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠ΅ Π² font.properties.ru (dialog, dialoginput ΠΈ Ρ. Π΄.). ΠΡΠΈ ΡΡΠΈΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈ ΠΏΡΠΈ Π²ΡΠ²ΠΎΠ΄Π΅, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΊΠΎΠ΄Π° Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΡΠΈΡΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎΡ ΡΡΠΈ ΡΡΡΠΎΡΠΊΠΈ:
dialog.0=Arial, RUSSIAN_CHARSET.
dialog.1=WingDings, SYMBOL_CHARSET, NEED_CONVERTED.
dialog.2=Symbol, SYMBOL_CHARSET, NEED_CONVERTED.
Π·Π°Π΄Π°ΡΡ, ΡΡΠΎ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΡΠΈΡΡ dialog ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ Π½Π°ΡΠ΅ΡΡΠ°Π½ΠΈΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· 3-Ρ ΡΡΠΈΡΡΠΎΠ² (Arial, WingDings ΠΈ Symbol). ΠΠ°Π»Π΅Π΅, Π²ΠΎΡ ΡΡΠΈ ΡΡΡΠΎΡΠΊΠΈ:
fontcharset.dialog.0=sun.io.CharToByteCp1251.
fontcharset.dialog.1=sun.awt.windows.CharToByteWingDings.
fontcharset.dialog.2=sun.awt.CharToByteSymbol.
Π·Π°Π΄Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ· Unicode Π² ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠΈΡΡΠ°. ΠΡΠΈ Π²ΡΠ²ΠΎΠ΄Π΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΠ½Π°ΡΠ°Π»Π° ΠΈΡΠ΅ΡΡΡ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΡΡΠΈΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ. ΠΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ. ΠΡΡΡ ΡΠ°ΠΊ ΠΆΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° (exclusion), ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π½ΠΎ Π·Π°Π΄Π°ΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠΈΡΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎΡ ΡΡΠ° ΡΡΡΠΎΠΊΠ°.
exclusion.dialog.0=0100−0400,0460-ffff.
Π·Π°Π΄Π°ΡΡ, ΡΡΠΎ ΠΏΡΠΈ Π²ΡΠ²ΠΎΠ΄Π΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Ρ ΠΊΠΎΠ΄Π°ΠΌΠΈ ΠΎΡ 0100 Π΄ΠΎ 0400 ΠΈ ΠΎΡ 0460 Π΄ΠΎ ffff ΡΡΠΈΡΡ 0 (Arial) ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ. ΠΡΠ° ΡΡΡΠΎΠΊΠ° Π½ΡΠΆΠ½Π°, Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ, Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΡΠΈ Π²ΡΠ²ΠΎΠ΄Π΅ Π³ΡΠ΅ΡΠ΅ΡΠΊΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΡΠΈΡΡ 0 (Arial) Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΠΏΠΎ exclusion, ΡΡΠΈΡΡ 1 (WingDings) Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ, Ρ.ΠΊ. Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ CharToByteWingDings ΠΎΠ½ΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠΈΡΡ 2 (Symbol), Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΅ΡΡΡ Π³ΡΠ΅ΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ.
Π‘ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Swing Π²ΡΡ ΠΏΡΠΎΡΠ΅ — Π² Π½Π΅ΠΉ Π²ΡΡ ΡΠΈΡΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ Java2D. ΠΠ°Π΄ΠΏΠΈΡΠΈ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³Π°Ρ (JOptionPane, JFileChooser, JColorChooser) ΠΏΠ΅ΡΠ΅Π΄Π΅Π»Π°ΡΡ Π½Π° ΡΡΡΡΠΊΠΈΠΉ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ — Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π»ΠΈΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ΅ΡΡΡΡΠΎΠ². Π― ΡΡΠΎ ΡΠΆΠ΅ ΠΏΡΠΎΠ΄Π΅Π»Π°Π», ΡΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π²Π·ΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ» ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅Π³ΠΎ Π² libext ΠΈΠ»ΠΈ Π² CLASSPATH. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ — Π² Π²Π΅ΡΡΠΈΡΡ JDK Π½Π°ΡΠΈΠ½Π°Ρ Ρ 1.2 rc1 ΠΈ ΠΏΠΎ 1.3 beta, ΡΡΡΡΠΊΠΈΠ΅ Π±ΡΠΊΠ²Ρ Π½Π΅ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ ΠΏΠΎΠ΄ Win9x ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΡΠΈΡΡΠΎΠ² (Arial, Courier New, Times New Roman, etc.) ΠΈΠ·-Π·Π° ΠΎΡΠΈΠ±ΠΊΠΈ Π² Java2D. ΠΡΠΈΠ±ΠΊΠ° Π²Π΅ΡΡΠΌΠ° ΡΠ²ΠΎΠ΅ΠΎΠ±ΡΠ°Π·Π½Π° — ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ ΡΡΠΈΡΡΠ°ΠΌΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π±ΡΠΊΠ² ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π½Π΅ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΊΠΎΠ΄Π°ΠΌΠΈ Unicode, Π° ΠΏΠΎ ΡΠ°Π±Π»ΠΈΡΠ΅ Cp1251 (ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° Ansi). ΠΡΠ° ΠΎΡΠΈΠ±ΠΊΠ° Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π° Π² BugParade ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ 4 192 443. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² Swing ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΡΠΈΡΡΡ, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ Π² ΡΠ°ΠΉΠ»Π΅ font.properties.ru, ΡΠ°ΠΊ ΡΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΈΡ Π΄ΡΡΠ³ΠΈΠΌΠΈ — ΠΈ ΡΡΡΡΠΊΠΈΠ΅ Π±ΡΠΊΠ²Ρ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π°Π±ΠΎΡ ΡΠ°Π±ΠΎΡΠΈΡ ΡΡΠΈΡΡΠΎΠ² Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ — ΡΡΠΎ ΡΡΠΈΡΡΡ Tahoma, Tahoma Bold ΠΈ Π΄Π²Π° Π½Π°Π±ΠΎΡΠ° ΡΡΠΈΡΡΠΎΠ² ΠΈΠ· Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° JDK — Lucida Sans * ΠΈ Lucida Typewriter * (ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° font.properties.ru). Π§Π΅ΠΌ ΡΡΠΈ ΡΡΠΈΡΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ — ΠΌΠ½Π΅ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎ.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 1.3rc1 ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΆΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π°, ΡΠ°ΠΊ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ JDK. JDK 1.2 ΡΠΆΠ΅ ΡΠΈΠ»ΡΠ½ΠΎ ΡΡΡΠ°ΡΠ΅Π», ΡΠ°ΠΊ ΡΡΠΎ Ρ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ. Π’Π°ΠΊ ΠΆΠ΅ Π½Π°Π΄ΠΎ ΡΡΠ΅ΡΡΡ, ΡΡΠΎ Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ Win95 ΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΡΡΠΈΡΡΡ, Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠ΅ Unicode — Π² ΡΡΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΈΡΡΡ ΠΈΠ· Win98 ΠΈΠ»ΠΈ WinNT.
Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΈΠ»ΠΈ «ΠΊΡΠ΄Π° Π΄Π΅Π»Π°ΡΡ Π±ΡΠΊΠ²Π° Π¨? «.
ΠΡΠΊΠ²Π° Π¨.
ΠΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ («ΠΊΡΠ΄Π° Π΄Π΅Π»Π°ΡΡ Π±ΡΠΊΠ²Π° Π¨? ») Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°ΡΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² Π½Π° Java. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΡΠΌΡΡ, ΠΊΡΠ΄Π° ΠΆΠ΅ ΠΎΠ½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π΄Π΅Π²Π°Π΅ΡΡΡ. :-).
ΠΠΎΡ ΡΠΈΠΏΠΈΡΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π°-Π»Ρ HelloWorld:
public class Test.
{.
public static void main (String[] args).
{.
System.out.println («ΠΠ¦Π£ΠΠΠΠΠ¨Π©ΠΠ₯Πͺ »);
}.
}.
Π² Far-Π΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π² ΡΠ°ΠΉΠ» Test. java, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΠ΅ΠΌ…
C:>javac Test.java.
ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ…
C:>java Test.
ΠΠ¦Π£ΠΠΠΠ?Π©ΠΠ₯Πͺ Π§ΡΠΎ ΠΆΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ? ΠΡΠ΄Π° Π΄Π΅Π»Π°ΡΡ Π±ΡΠΊΠ²Π° Π¨? ΠΠ΅ΡΡ ΡΠΎΠΊΡΡ Π·Π΄Π΅ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° Π²Π·Π°ΠΈΠΌΠΎΠΊΠΎΠΌΠΏΠ΅Π½ΡΠ°ΡΠΈΡ Π΄Π²ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ. Π’Π΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ Π² Far ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ» Π² DOS-ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅ (Cp866). ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΆΠ΅ javac Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ file. encoding (Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ ΠΈΠ½ΠΎΠ΅ ΠΊΠ»ΡΡΠΈΠΊΠΎΠΌencoding). Π Π² ΡΡΠ΅Π΄Π΅ Windows Ρ ΡΡΡΡΠΊΠΈΠΌΠΈ ΡΠ΅Π³ΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΎΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Cp1251. ΠΡΠΎ ΠΏΠ΅ΡΠ²Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅, Π² ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Test. class ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅Π²Π΅ΡΠ½ΡΠ΅ ΠΊΠΎΠ΄Π°. ΠΡΠΎΡΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ PrintStream, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΠΈΠ· file. encoding, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π² Windows ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ DOS. ΠΡΠ»ΠΈ Π±Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° Cp1251 Π±ΡΠ»Π° Π²Π·Π°ΠΈΠΌΠΎΠΎΠ΄Π½Π°Π·Π½Π°ΡΠ½ΠΎΠΉ, ΡΠΎ ΠΏΠΎΡΠ΅ΡΠΈ Π΄Π°Π½Π½ΡΡ Π±Ρ Π½Π΅ Π±ΡΠ»ΠΎ. ΠΠΎ ΡΠΈΠΌΠ²ΠΎΠ» Π¨ Π² Cp866 ΠΈΠΌΠ΅Π΅Ρ ΠΊΠΎΠ΄ 152, ΠΊΠΎΡΠΎΡΡΠΉ Π² Cp1251 Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π½Π° Unicode-ΡΠΈΠΌΠ²ΠΎΠ» 0xFFFD. ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· char Π² byte, Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Π³ΠΎ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ» "? «.
ΠΠ° Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠ²Π°ΡΡΡΡ, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΠ· ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ java.io.FileReader, Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠ²Π΅ΡΡΠΈ ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½ ΡΠ΅ΡΠ΅Π· System.out.println (). ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ» Π±ΡΠ» Π·Π°ΠΏΠΈΡΠ°Π½ Π² ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅ Cp866, ΡΠΎ Π²ΡΠ²ΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΠΈΠ΄ΡΠΈ Π²Π΅ΡΠ½ΠΎ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΡΡΡ ΠΆΠ΅ Π±ΡΠΊΠ²Ρ Π¨.
ΠΡΡΠΌΠ°Ρ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡ bytechar.
ΠΡΠ° ΠΎΡΠΈΠ±ΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΡΠ±ΠΈΠΌΠΎΠΉ Ρ Π·Π°ΡΡΠ±Π΅ΠΆΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² Π½Π° Java. ΠΠ½Π° Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π° Π² Π½Π°ΡΠ°Π»Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΡ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΠΆΠΈΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ, ΡΠΎ Π²ΡΠ΅Π³Π΄Π° ΠΎΠ±ΡΠ°ΡΠ°ΠΉΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ²Π½ΡΡ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡ ΡΠΈΠΏΠΎΠ² — (byte) ΠΈΠ»ΠΈ (char). ΠΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°ΡΡΠΎ Π² ΡΠ°ΠΊΠΈΡ ΠΌΠ΅ΡΡΠ°Ρ Π·Π°ΠΊΠΎΠΏΠ°Π½Ρ Π³ΡΠ°Π±Π»ΠΈ.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΡΡΡΡΠΊΠΈΠΌΠΈ Π±ΡΠΊΠ²Π°ΠΌΠΈ ΠΡΠ»ΠΈ ΠΡ Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΠ΅ ΡΠ΅Π±Π΅ Π³Π΄Π΅ Π² ΠΠ°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΠΏΠΎΡΠ΅ΡΡ ΡΡΡΡΠΊΠΈΡ Π±ΡΠΊΠ², ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅ΡΡ. ΠΡΠ±ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ . Π ΡΡΡΠΊΠΈΠ΅ Π±ΡΠΊΠ²Ρ — ΡΡΠΎ ΡΠ°ΠΊΠΈΠ΅ ΠΆΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΎΠ½ΠΈ ΠΏΡΠΎΡ ΠΎΠ΄ΡΡ Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΈ ΡΡΠ°Π΄ΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ: ΠΎΠ½ΠΈ ΠΎΡΠΊΡΠ΄Π°-ΡΠΎ ΡΠΈΡΠ°ΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (Π²Ρ ΠΎΠ΄), ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π²Π½ΡΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (Π²ΡΡ ΠΎΠ΄). ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π½Π°Π΄ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π²ΠΌΠ΅ΡΡΠΎ Π΄Π°Π½Π½ΡΡ Π·Π°ΡΠΈΡΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊ ΡΠ°ΠΊΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΡΡΡΠΎΠΊΡ: «ΠΠΠu0410u0411u0412 », ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π΅Ρ Π²ΡΠ²Π΅ΡΡΠΈ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠΌΠΎΡΡΠΈΡΠ΅, ΡΡΠΎ Ρ ΠΠ°Ρ Π²ΡΠ²Π΅Π»ΠΎΡΡ:
ΠΡΠ»ΠΈ ΠΡ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ «ΠΠΠΠΠΠ », Π·Π½Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΎΠ² ΠΈ Π²ΡΠ²ΠΎΠ΄ Ρ ΠΠ°Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.
ΠΡΠ»ΠΈ ΠΡ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ " ???ΠΠΠ «(ΠΈΠ»ΠΈ Π»ΡΠ±ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΊΡΠΎΠΌΠ΅ «ΠΠΠ «Π½Π° ΠΌΠ΅ΡΡΠ΅ ΠΏΠ΅ΡΠ²ΡΡ ΡΡΡΡ Π±ΡΠΊΠ²), Π·Π½Π°ΡΠΈΡ Π²ΡΠ²ΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, Π½ΠΎ Π²ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΎΠ² ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π΅Π²Π΅ΡΠ½ΠΎ — ΡΠΊΠΎΡΠ΅ΠΉ Π²ΡΠ΅Π³ΠΎ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ ΠΊΠ»ΡΡΠΈΠΊencoding.
ΠΡΠ»ΠΈ ΠΡ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ " ??? «(ΠΈΠ»ΠΈ Π»ΡΠ±ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΊΡΠΎΠΌΠ΅ «ΠΠΠ «Π½Π° ΠΌΠ΅ΡΡΠ΅ Π²ΡΠΎΡΠΎΠΉ ΡΡΠΎΠΉΠΊΠΈ Π±ΡΠΊΠ²), Π·Π½Π°ΡΠΈΡ Π²ΡΠ²ΠΎΠ΄ Ρ ΠΠ°Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅Π²Π΅ΡΠ½ΠΎ.
ΠΠ°ΡΡΡΠΎΠΈΠ² Π²ΡΠ²ΠΎΠ΄ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΡΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ ΠΈ ΡΠΎ Π²Ρ ΠΎΠ΄ΠΎΠΌ. ΠΠΎΡΠ»Π΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π²ΡΠ΅ΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΡΠ΅Π·Π½ΡΡΡ.
ΠΠ± ΡΡΠΈΠ»ΠΈΡΠ΅ native2ascii.
ΠΡΠ° ΡΡΠΈΠ»ΠΈΡΠ° Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠ°Π² Sun JDK ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ² ΠΊ ASCII-Π²ΠΈΠ΄Ρ. ΠΠ½Π° ΡΠΈΡΠ°Π΅Ρ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ», ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ, Π° Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ «uXXXX ». ΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠ»ΡΡΠΈΠΊreverse, ΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΡ. ΠΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½Π° Π΄Π»Ρ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ΅ΡΡΡΡΠΎΠ² (.properties) ΠΈΠ»ΠΈ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΎΠ², Π΅ΡΠ»ΠΈ ΠΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΠ΅, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΡΡΡ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°Ρ Ρ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌΠΈ ΠΎΡ ΡΡΡΡΠΊΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ.
ΠΡΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΎΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ Π²Ρ ΠΎΠ΄ΠΎΠΌ (stdin), Π° Π½Π΅ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΡ ΠΏΠΎ ΠΊΠ»ΡΡΠ°ΠΌ, ΠΊΠ°ΠΊ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠΈΠ»ΠΈΡΡ. ΠΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈ Π½Π΅ Π΄ΠΎΠ³Π°Π΄ΡΠ²Π°ΡΡΡΡ ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² (ΠΊΡΠΎΠΌΠ΅, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΡΠ΅Ρ , ΠΊΡΠΎ Π½Π°ΡΡΠ» Π² ΡΠ΅Π±Π΅ ΡΠΈΠ»Ρ ΠΈ ΠΌΡΠΆΠ΅ΡΡΠ²ΠΎ Π·Π°Π³Π»ΡΠ½ΡΡΡ ΡΠ°ΠΊΠΈ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ :-). ΠΠ΅ΠΆΠ΄Ρ ΡΠ΅ΠΌ ΡΡΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΠ΅ Π΄Π»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, ΡΠΊΠ°Π·Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ (ΠΊΠ»ΡΡΠΈΠΊencoding). ΠΡΠ»ΠΈ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (file.encoding), ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΡ ΠΎΠ΄ΠΈΡΡΡ Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΉ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅, ΠΏΠΎΠ»ΡΡΠΈΠ² Π½Π΅Π²Π΅ΡΠ½ΡΠ΅ ΠΊΠΎΠ΄Π° Π±ΡΠΊΠ² (ΠΈΠ·-Π·Π° Π½Π΅Π²Π΅ΡΠ½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ) ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ°ΡΠΈΡΡ Π²Π΅ΡΡΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΏΠΎΠΈΡΠΊ ΠΎΡΠΈΠ±ΠΎΠΊ Π² Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π²Π΅ΡΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅.
Π ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ Π΅Π³ΠΎ ΡΡΡΡ ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ. ΠΠ½ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΠ½ΡΡ ΠΊΠΎΠ΄ΠΎΠ² Π±ΡΠΊΠ², Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ Π½Π΅Π²Π΅ΡΠ½ΠΎ ΠΏΡΠΎΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½Ρ. Π‘ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΡΠΎΡΡΠ°: ΠΈΠ· ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ Π½Π΅Π²Π΅ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ, Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π±Π°ΠΉΡΠΎΠ². ΠΠ°ΡΠ΅ΠΌ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π±Π°ΠΉΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΆΠ΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ, ΠΏΠΎΠ»ΡΡΠ°ΡΡΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ΄Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΡΠΈΠΌΠ΅Ρ:
String res = new String (src.getBytes («ISO-8859−1 »), «Cp1251 »);
ΠΡΠΎΠ±Π»Π΅ΠΌ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΡΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅Π²Π΅ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΈΡΠ°, ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ . ΠΡΡΠ³Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ byte char. Π‘ΠΌΠΎΡΡΠΈΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π·Π° Π½ΠΎΠΌΠ΅ΡΠΎΠΌ 4 296 969.
ΠΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΡΡΠΎΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ°ΠΌΠΎΠΌ ΠΊΡΠ°ΠΉΠ½Π΅ΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΡΠΆΠ΅ Π½ΠΈΡΡΠΎ Π΄ΡΡΠ³ΠΎΠ΅ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ, ΠΈ ΠΡ ΡΡΡΠΊΠΎ ΡΠ΅Π±Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΠ΅, Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π΅Π²Π΅ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
Π ΡΡΡΠΊΠΈΠ΅ Π±ΡΠΊΠ²Ρ ΠΈ MS JVM.
ΠΠ΅ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ, Π½ΠΎ Π² Π½Π΅ΠΉ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΎΠΊ ΡΡΡΡΠΊΠΈΡ Π±ΡΠΊΠ², Π°ΠΊΡΠΎΠΌΡ Cp1251 (Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΠΎΠ½ΠΈ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΡΡΠ°Π»ΠΈΡΡ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°). ΠΡΠ»ΠΈ ΠΠ°ΠΌ Π½ΡΠΆΠ½Ρ Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Cp866, ΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ Π² CLASSPATH. ΠΡΠΈΡΡΠΌ ΠΊΠ»Π°ΡΡΡ ΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΉ Sun JDK Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ — Ρ Sun-Π° ΡΠΆΠ΅ Π΄Π°Π²Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π°ΡΡ ΠΈΡ ΡΡΡΡΠΊΡΡΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² Ρ Microsoft-ΠΎΠΌ Π½Π΅ ΡΡΡΠΊΡΡΡΡΡ (Ρ MS ΠΎΡΡΠ°Π»Π°ΡΡ ΡΡΡΡΠΊΡΡΡΠ° ΠΎΡ JDK 1.1.4). ΠΠ° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Microsoft, Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, Π»Π΅ΠΆΠΈΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΎΠΊ, Π½ΠΎ ΡΠ°ΠΌ ΡΠ°ΠΉΠ» ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΎΠΊΠΎΠ»ΠΎ 3 ΠΌΠ΅ΡΡΠΎΠ², Π° ΠΈΡ ΡΠ΅ΡΠ²Π΅Ρ Π΄ΠΎΠΊΠ°ΡΠΊΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ :-). ΠΠ½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΡΠ°ΠΊΠΈ Π²ΡΠΊΠ°ΡΠ°ΡΡ ΡΡΠΎΡ ΡΠ°ΠΉΠ», Ρ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΏΠ°ΠΊΠΎΠ²Π°Π» jar-ΠΎΠΌ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π·ΡΡΡ Π΅Π³ΠΎ ΠΎΡΡΡΠ΄Π°.
ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΡ ΠΏΠΈΡΠ΅ΡΠ΅ Π°ΠΏΠΏΠ»Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠΎΠ΄ MS JVM ΠΈ ΠΠ°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΎΡΠΊΡΠ΄Π°-ΡΠΎ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ· ΡΠ°ΠΉΠ»Π° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅) Π±Π°ΠΉΡΡ Π² ΡΡΡΡΠΊΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅, ΠΎΡΠ»ΠΈΡΠ½ΠΎΠΉ ΠΎΡ Cp1251 (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Cp866), ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΎΠΊ ΠΡ ΡΠΆΠ΅ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ — Π°ΠΏΠΏΠ»Π΅ΡΠ°ΠΌ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΊΠ»Π°ΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ, ΠΊΠΎΠΈΠΌ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΠΊΠ΅Ρ sun.io. ΠΡΡ ΠΎΠ΄Π° ΡΡΡ Π΄Π²Π° — ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π² Cp1251 (ΠΈΠ»ΠΈ Π² UTF-8) ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ· Π±Π°ΠΉΡΠΎΠ² Π² Unicode Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΡ Π±Π°ΠΉΡΠΎΠ² ΠΈΠ· Π½ΡΠΆΠ½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ Π² Cp1251.
Π ΡΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Java ΠΏΠΎΠ΄ Linux.
Π‘ΠΊΠ°ΠΆΡ ΡΡΠ°Π·Ρ — Ρ Ρ Linux Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Ρ, Π° ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½Π°Ρ Π·Π΄Π΅ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π° ΠΎΡ ΡΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΡ Π½Π°ΠΉΠ΄ΡΡΠ΅ Π½Π΅ΡΠΎΡΠ½ΠΎΡΡΡ ΠΈΠ»ΠΈ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΡ — Π½Π°ΠΏΠΈΡΠΈΡΠ΅ ΠΌΠ½Π΅.
ΠΡΠΈ ΠΊΠΈΡΠΈΠ»Π»ΠΈΠ·Π°ΡΠΈΠΈ JVM Π² Linux ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ:
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΡΠ²ΠΎΠ΄Π° ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΡ Π² GUI-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ .
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π²Π²ΠΎΠ΄Π° ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΡ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ (Π² X11).
ΠΡΠΎΠ±Π»Π΅ΠΌΡ Π²ΡΠ²ΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ ΡΠ°ΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ (Π΄Π°Π½Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠΈΡΠ»Π°Π» Artemy E. Kapitula):
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π² X11 Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠΈΡΡΡ ttf ΠΈΠ· Windows NT/200. Π― Π±Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» Arial, Times New Roman, Courier New, Verdana ΠΈ Tahoma — ΠΏΡΠΈΡΠ΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΠΈΡ Π»ΡΡΡΠ΅ Π½Π΅ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΠ²Π΅Ρ ΡΡΠΈΡΡΠΎΠ², Π° ΠΊΠ°ΠΊ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ.
ΠΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°ΠΉΠ» font.properties.ru Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ $JAVA_HOME/jre/lib.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π²Π²ΠΎΠ΄Π° ΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ (Π΄Π°Π½Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠΈΡΠ»Π°Π» ΠΠΈΡ Π°ΠΈΠ» ΠΠ²Π°Π½ΠΎΠ²):
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π²Π²ΠΎΠ΄Π° ΡΡΡΡΠΊΠΈΡ Π±ΡΠΊΠ² Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ:
Mandrake Linux 7.1.
XFree86 3.3.6.
IBM Java 1.3.0 (ΡΠ΅Π»ΠΈΠ·Π½Π°Ρ).
ΠΡΠΎΠ±Π»Π΅ΠΌΠ°:
IBM Java 1.3 Π½Π΅ Π΄Π°Π΅Ρ Π²Π²ΠΎΠ΄ΠΈΡΡ ΡΡΡΡΠΊΠΈΠ΅ Π±ΡΠΊΠ²Ρ (Π²ΠΈΠ΄Π½Ρ ΠΊΠ°ΠΊ ΠΊΡΠΎΠΊΠΎΠ·ΡΠ±ΡΡ) ΠΏΡΠΈ ΡΠΎΠΌ ΡΡΠΎ Π½Π° Π»Π΅ΠΉΠ±Π»Π°Ρ ΠΈ Π² ΠΌΠ΅Π½ΡΡ Π°Ρ ΠΈΡ Π²ΠΈΠ΄Π½ΠΎ.
ΠΡΠΈΡΠΈΠ½Π°:
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ XIM (-> xkb) Π² AWT. (ΡΡΠΎ Π½Π΅ Π΅ΡΡΡ ΠΏΠ»ΠΎΡ ΠΎ ΡΠ°ΠΌΠΎ ΠΏΠΎ ΡΠ΅Π±Π΅, ΠΏΡΠΎΡΡΠΎ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΡΡΡΠΊΠ°ΠΌΠΈ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎ + Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ»Π°Π΄Ρ xkb Π½Π΅ Π»ΡΠ±ΡΡ).
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
ΠΠ°ΡΡΡΠΎΠΈΡΡ xkb (ΠΈ Π»ΠΎΠΊΠ°Π»Ρ (xkb Π±Π΅Π· Π»ΠΎΠΊΠ°Π»ΠΈ ΠΠ Π ΠΠΠΠ’ΠΠΠ’)).
ΠΡΠΎΡΠ΅Π΄ΡΡΠ°:
Π²ΡΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π»ΠΎΠΊΠ°Π»Ρ (Π³Π΄Π΅-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠΈΠΏΠ° Π² /etc/profile ΠΈΠ»ΠΈ Π² ~/.bash_profile).
export LANG=ru_RU.KOI8-R.
export LC_ALL=ru_RU.KOI8-R.
ΠΏΡΠ°Π²ΠΈΡΡΡ (Π΅ΡΠ»ΠΈ ΡΡΠΎ Π΅ΡΠ΅ Π½Π΅ ΡΠ΄Π΅Π»Π°Π½ΠΎ) /etc/X11/XF86Config. Π ΡΠ΅ΠΊΡΠΈΠΈ Keyboard Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
XkbKeycodes «xfree86 «.
XkbTypes «default «.
XkbCompat «default «.
XkbSymbols «ru «.
XkbGeometry «pc «.
XkbRules «xfree86 «.
XkbModel «pc101 «.
XkbLayout «ru «.
XkbOptions «grp:shift_toggle » # ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ 2-ΠΌΡ ΡΠΈΡΡΠ°ΠΌΠΈ.
#XkbOptions «grp:caps_toggle » # ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ caps-lock «ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΡΠ°ΠΊΠ°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° xkb Π½Π΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠ° Ρ xrus (ΠΈ Π΅ΠΌΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΡΠΈΠΏΠ° kikbd) Π° ΠΏΠΎΡΠ΅ΠΌΡ Ρ Π½ΠΈΠΌΠΈ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠ°ΡΠΏΡΠΎΡΠ°ΡΡΡΡ.
ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ X-Ρ. ΠΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠΎΠ±Ρ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ (ΡΠΈΠΏΠ° ΡΡΡΡΠΊΠΈΠ΅ Π±ΡΠΊΠΎΠ²ΠΊΠΈ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ).
font.properties.ru -> $JAVA_HOME/jre/lib.
fonts.dir -> $JAVA_HOME/jre/lib/fonts.
cd $JAVA_HOME/jre/lib/fonts; rm fonts. scale; lns fonts. dir fonts.scale.
Π’Π΅ΠΏΠ΅ΡΡ ΡΡΡΡΠΊΠΈΠ΅ Π±ΡΠΊΠ²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²Π²ΠΎΠ΄ΠΈΡΡΡΡ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡΡ Π² ΡΠ²ΠΈΠ½Π³Π΅ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΠ°ΠΊ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΈΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ font.properties.ru Π΄Π»Ρ Linux. ΠΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΠ½ΠΈ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΡΠΈΡΡΡ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² AWT ΠΈ Swing. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈΠΌ.
Π‘ΠΏΠΈΡΠΎΠΊ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ
ΠΠ»Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π±ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ Ρ ΡΠ°ΠΉΡΠ° internet.