Кодировка UTF-8 не поддерживается средой выполнения Java - PullRequest
11 голосов
/ 07 октября 2008

Всякий раз, когда я запускаю наше приложение на основе Apache Felix (OSGi) под SUN Java (сборка 1.6.0_10-rc2-b32 и другие сборки 1.6.x), я вижу следующие сообщения на консоли (обычно под Ubuntu 8.4):

Предупреждение. Кодировка UTF-8 не поддерживается средой выполнения Java.

Я иногда видел это сообщение при запуске одновременно Tomcat и Resin. Если Java поддерживает Unicode и UTF-8, что вызывает это сообщение? Я еще не нашел ни ссылки, ни ответа на это где-либо еще.

Ответы [ 6 ]

11 голосов
/ 07 октября 2008

Согласно документации"Каждая реализация платформы Java должна поддерживать следующие стандартные кодировки ... US-ASCII, ISO-8859-1, UTF-8, UTF-16BE, UTF- 16LE, UTF-16. " Поэтому я сомневаюсь, что Sun выпустила сборку без поддержки UTF-8.

Фактическое сообщение об ошибке выглядит как здесь , которое является частью синтаксического анализатора Xerces XML. Я полагаю, что это синтаксический анализатор XML, где проблема возникает.

7 голосов
/ 07 октября 2008

Попробуйте следующую программу:

import java.nio.charset.Charset;

public class TestCharset {
    public static void main(String[] args) {
        System.out.println(Charset.forName("UTF-8"));
    }
}

Если это вызывает исключение, значит, что-то не так с вашим JDK. Если он печатает «UTF-8», то с JDK все в порядке, а ваше приложение делает что-то странное.

Если это так, запустите приложение под отладчиком и установите точку останова в http://www.java2s.com/Open-Source/Java-Document/XML/xalan/org/apache/xml/serializer/ToStream.java.htm - это место, где выдается это предупреждение, и шаг, чтобы увидеть, почему Xalan не может найти кодировку. 1008 *

2 голосов
/ 07 октября 2008

Скорее всего, кто-то поставил catch (), ожидая, что будут только неподдерживаемые исключения кодирования, поэтому он использовал соответствующее сообщение. Но он использовал слишком широкую спецификацию исключений (например, catch (Exception ex)), поэтому, когда во время выполнения он получил что-то другое (недействительный XML, NPE, ...), сообщение стало вводить в заблуждение.

0 голосов
/ 30 августа 2012

Если вы получаете это сообщение при использовании Transformer, попробуйте указать TransformerFactory:

ссылка

0 голосов
/ 25 февраля 2011

Должно быть "UTF8", без черты.

0 голосов
/ 28 июля 2009

Попробуйте другую (стабильную версию) JVM. Однажды у меня возникла эта проблема, и оказалось, что на машине установлена ​​бета-версия JVM, которая на самом деле не поддерживает UTF-8, что противоречит требованиям документации API.

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