2013-06-18 1 views
2

Я должен сделать это, используя JavaОтображение символов евро с помощью юникода и изменение символов в верхний регистр

Часть1: Выход € 188, используя примитивный тип данных символов. Использовать Юникод для Евро-символа €

Часть 2: Измените следующие переменные символов j''o''e 'на верхний регистр JOE и выведите результат.

Я использовал этот код, я что-то упустил?

public class Test27 { 

    public static void main (String args[]){ 
    System.out.println("\u20ac" +"188"); 

    String changeCase= "joe"; 

    String result; 
    result=changeCase.toUpperCase(); 

    System.out.println(result);   
    } 
} 

Приветствие

+2

Что происходит, когда вы собираете/запустить его? Я не использовал Java совсем недавно, но мне это кажется разумным ... В чем проблема? –

+0

Помимо стиля ничего. Пространства - хорошая идея, но их можно использовать более систематически. 'changeCase' явно не идентифицируется как существительное, например' mixedCase' или 'littleJoe'. Символьная переменная не похожа на String. –

+0

Назначение говорит использовать примитивные типы данных 'char', а не' String'. Таким образом, это будет '' \ u20AC '+ "188" ',' System.out.print (Character.toUpperCase (' j ')) 'и т. Д. – erickson

ответ

1

Если выход искажен, а не знак евро, это, вероятно, проблема с консолью, где вы работаете программу. Убедитесь, что он способен печатать & # x20AC; и что кодировка символов по умолчанию для платформы соответствует кодировке символов консоли.

4

Если речь идет только о получении знак евро искажен, то есть программа

import java.io.*; 

public class Foo { 

    public static void main (String args[]) 
     throws Exception 
    { 
     System.out.println("\u20ac"); 
    } 
} 

Затем, сначала вы должны прочитать The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!).

Затем вам нужно сделать кодировку, отправленную Java, в соответствие с ожидаемой кодировкой вещью, отображающей вывод Java. Я предполагаю, что вы работаете в командной строке.

  • В Linux это должно сработать. По умолчанию используется UTF-8.

  • На Mac в Terminal.app это не сработает, потому что по какой-то сумасшедшей причине текстовая кодировка по умолчанию для Java - это ancient MacRoman character set, у которой нет евро. Но Terminal.app полностью поддерживает UTF-8. Технически вы можете отключить это в терминале → Настройки → Настройки → Дополнительно → Международные, но по умолчанию это UTF-8.

    Чтобы установить Java, чтобы использовать вывод UTF-8, вы можете передать аргумент командной строки

    java -Dfile.encoding=UTF-8 Foo 
    

    Но это работает только, если вы можете контролировать запуск программы. Если вы отправляете JAR или .class файлы для запуска других, это не сработает. Вы можете настроить кодировку самостоятельно, создав объект, который будет писать в System.out с другой кодировкой:

    import java.io.*; 
    
    public class Foo { 
    
        public static void main (String args[]) 
         throws Exception 
        { 
         PrintWriter out = new PrintWriter(
          new OutputStreamWriter(System.out, "UTF-8"), true); 
    
         out.println("\u20ac"); 
        } 
    } 
    

    До тех пор, как вы помните, чтобы всегда использовать новую переменную out для печати вместо System.out.

  • В Windows это становится более сумасшедшим. Кодировка по умолчанию в командной строке зависит от разных языковых версий Windows. В английской версии Windows это Cp850. В русской Windows это Cp866. У символа евро тоже нет! Вы можете изменить кодировку командой chcp, но даже если вы измените ее на кодировку, имеющую символ Евро, шрифт командной строки по умолчанию не имеет символа евро!

    Возможно, вы сможете обнаружить из Java, что вы работаете в командной строке Windows, программно изменить кодировку и шрифт, а затем вывести свою строку, но это очень много работы. Вероятно, вам лучше использовать приведенный выше код для принудительного вывода UTF-8 и включить инструкции с вашим кодом, чтобы, если он будет запущен в командной строке Windows, пользователю сначала необходимо:

    1. Запустите chcp 65001, чтобы переключить кодировку командной строки на UTF-8
    2. Переключить шрифт в Lucida Console, щелкнув значок в верхнем левом углу, выбрав «Свойства» и перейдите на вкладку «Шрифт».

    Чтобы облегчить вам работу, но чтобы увеличить вероятность того, что код, который вы написали, будет работать только на вашем компьютере, вы также можете change the default command prompt code page to UTF-8.

enter image description here enter image description here

+1

Обратите внимание, что во время выполнения MS C возникают серьезные ошибки, когда для кодовой страницы установлено значение 65001, что может привести к тому, что Java и другие приложения будут зависать или вести себя непоследовательно. Так что вообще не рекомендуется работать в 65001 для всего. К сожалению, UTF-8 является гражданином второго сорта под Windows. – bobince

+0

Спасибо, что я очень много, проблем с выпуском не было, это была путаница с Char и String, он выдавал 188 евро в порядке, я просто не был уверен, соответствует ли код спецификациям, ура! –

+1

В качестве altenative для кодовой страницы 65001 также 858 (также известный как IBM00858: OEM Multilingual Latin 1 + Euro символ) имеет символ € – user1708042