У нас есть приложение Java на основе maven-jetty, развернутое на heroku.По умолчанию Charset на Heroku (US-ASCII) вызывает проблемы
Локально, когда я делаю:
System.out.println("Default Charset = "+ Charset.defaultCharset());
String s = "Resumé of Schrödinger";
System.out.println("s = "+ s);`
Я вижу (, как и ожидалось):
Default Charset = UTF-8
s = Resumé of Schrödinger
Но, когда я нажимаю приложение Heroku и проверить журналы, я вижу :
Default Charset = US-ASCII
s = Resum?? of Schr??dinger
На самом деле, я столкнулся с дополнительными проблемами из-за этого, поскольку мы ve, чтобы декодировать кодированный текст Base-64 с кодированными символами UTF-8.
Я даже попытался следующие без применения:
SAXBuilder builder = new SAXBuilder();
InputStream iStream = new ByteArrayInputStream(xmlAsString.getBytes("UTF-8"));
Reader reader = new InputStreamReader(iStream, "UTF-8");
InputSource is = new InputSource(reader);
is.setEncoding("UTF-8");
И позже, когда делать org.apache.commons.codec.binary.Base64.decodeBase64(byte [])
я даже делать stringObject.getBytes("UTF-8")
Но все-таки, я не могу видеть символы, такие как е-острый (é), umlaut (ö) и т. д.
Есть ли способ решить эту проблему на Heroku?
версия JDK в pom.xml является 1,6
Является ли это причуда OpenJDK 1.7 & виртуальная машина под в Heroku?
Заранее спасибо.
Звучит ужасно. Я знаю, что ruby buildpack устанавливает 'LANG = en_US.UTF-8' и гарантирует, что приложения ruby по умолчанию будут unicode. Не уверен в java buildpack, tho. Каково содержимое вашей 'heroku config'? Обязательно удалите любую конфиденциальную информацию, такую как учетные данные подключения. – kch
Похоже OpenJDK виновник –
Моего Heroku значение конфигурации, как показано ниже: JAVA_OPTS: -Xmx384m -Xss512k -XX: + UseCompressedOops MAVEN_HOME:. MAVEN_OPTS: -Xmx384m -Xss512k -XX: + UseCompressedOops PATH: /app/.jdk/bin:/usr/local/bin:/usr/bin:/bin – fritz