Я пытаюсь заставить веб-приложение Google App Engine отправлять обратно кодированный в кодировке UTF-8 текст в браузер.
Я делаю это, написав это:
byte[] utf8Bytes = "æøå".getBytes("UTF-8");
Когда я делаю это локально, я получаю байтовый массив с 6 байтами назад.
Когда я делаю это в Google App Engine, я получаю массив с 12 байтами назад. Странно, а?
Кто-нибудь знает почему?
Мне удалось написать кодированный в UTF-8 текст из GAE, кодировав байты самостоятельно,
и записать необработанные байты обратно. Как это:
output.write(new byte[]{(byte)0xc3, (byte)0xa5, (byte) 0xc3, (byte)0xa6, (byte)0xc3, (byte)0xb8 });
И это действительно работает. Но есть ли у кого-нибудь ответ на вопрос, почему String в GAE кодируются иначе, чем локально?
Примечание. Кодирование символов с помощью экранирования Юникод работает следующим образом:
byte[] utf8Bytes = "\u00E5\u00F8\u00E6".getBytes("UTF-8");