Специальные символы (немецкий умлаут) в константе перечисления - PullRequest
2 голосов
/ 02 апреля 2011

для данного типа перечисления:

    public enum PackageType  {
    BEHAELTER("BH", "Behälter")

    String value;
    String id;
    String description;

     PackageType(String id, String description) {
        this.id = id;
        this.description = description;        
    }
}

При работе с этим перечислением умлаут "ä" в Behälter отображается неправильно.Даже когда я отлаживаю в конструкторе и наблюдаю атрибут «описание», я вижу его неправильно.

Существует ли спецификация Java, которая запрещает какие-либо специальные символы в конструкциях, подобных этой?Я довольно невежественен в этом пункте.

Я заметил, что при сериализации этого перечисления в JSON, и вернул его моему интерфейсу.

Спасибо

1 Ответ

7 голосов
/ 02 апреля 2011

Это не имеет ничего общего с перечислениями - вы бы, вероятно, увидели то же самое, если бы у вас просто было такое консольное приложение:

public class Test {
  public static void main(String[] args) {
    String x = "Behälter";
    System.out.println((int) x.charAt(3));
  } 
}

Возможные проблемы:

  • Выне говорите компилятору использовать правильную кодировку (это наиболее вероятный вариант)
  • Ваш отладчик не может правильно отобразить значение
  • Ваша сериализация JSON не работает должным образом(например, вы не отправляете правильную кодировку)
  • Ваш JSON десериализация не работает должным образом (например, внешний интерфейс игнорирует указанную вами кодировку)

Первый вариант наиболее вероятен, если честно.Если это так, то это легко проверить - измените строку на "Beh\u00e4lter" - интересующий вас символ - U + 00E4, так что экранирование Unicode позволяет вам выразить его в строковом литерале, не выходя за пределы ASCII на самом делеИсходный код.

Если это действительно работает, то вы можете вернуться к предыдущему коду, но проверить, как на самом деле сохраняется исходный файл, и что говорят ваши параметры компилятора.(Лично я бы порекомендовал использовать UTF-8 в качестве полно-Unicode, хорошо поддерживаемой кодировки.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...