Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Java: Росіяни букви і не тільки ...

Реферат Java: Росіяни букви і не тільки ...





куди ж вона дійсно найчастіше дівається. :-) p> Ось типова програма а-ля HelloWorld:

public class Test

{

public static void main (String [] args)

{

System.out.println ("ЙЦУКЕНГШЩЗХ'");

}

}

в Far-е зберігаємо даний код у файл Test.java, компіляем ... p> C:> javac Test.java

і запускаємо ... p> 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, замість нього підставляється символ '?'. p> На аналогічну компенсацію можна нарватися, якщо прочитати символи з текстового файлу за допомогою java.io.FileReader, а потім вивести їх на екран через System.out.println (). Якщо файл був записаний у кодуванні Cp866, то висновок буде йти вірно, за винятком знову ж букви Ш.

Пряма конверсія bytechar.

Ця помилка є улюбленою у зарубіжних програмістів на Java. Вона досить детально розглянута на початку опису. Якщо Ви коли-небудь будете дивитися чужі вихідні коди, то завжди звертайте увагу на явну конверсію типів - (byte) або (char). Досить часто в таких місцях закопані граблі. p> Алгоритм пошуку проблем з російськими буквами

Якщо Ви не уявляєте собі де у Вашій програмі може відбуватися втрата російських букв, то можна спробувати наступний тест. Будь-яку програму можна розглядати як обробник вхідних даних. Російські літери - це такі ж дані, вони проходять в загальному випадку три стадії обробки: вони звідкись читаються в пам'ять програми (вхід), обробляються всередині програми і виводяться користувачеві (Вихід). Для того, щоб визначити місце проблем, треба спробувати замість даних зашити в вихідник таку тестову рядок: "АБВu0410u0411u0412", і спробувати її вивести. Після цього дивіться, що у Вас вивелося:

Якщо Ви побачите "АБВАБВ", значить компіляція початкових кодів і висновок у Вас працюють правильно. p> Якщо Ви побачите "??? АБВ" (або будь-які інші символи крім "АБВ" на місці перших трьох літер), значить висновок працює правильно, але от компіляція ісходников відбувається невірно - скоріш...


Назад | сторінка 16 з 19 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Java: Засоби побудови звітів для Java-додатків
  • Реферат на тему: Якщо лікарняний невірно розрахований
  • Реферат на тему: Створення бази даних автомобілебудівного підприємства у вигляді настільного ...
  • Реферат на тему: Як враховувати рух грошей, якщо компанія розраховується через електронний г ...
  • Реферат на тему: Формування бази даних книг магазину на Java