У меня есть веб-приложение struts2, которое принимает запросы POST и GET во многих различных кодировках, выполняет их преобразование в utf-8, отображает правильные символы utf-8 на экране и затем записывает их в базу данных utf-8.
Я попробовал по крайней мере 5 различных способов сделать простое преобразование кодировки без потерь из windows-1250 в utf-8 для начала, и все они не работали. Utf-8 - это «больший набор», он должен работать без проблем (по крайней мере, это мое понимание).
Можете ли вы предложить, как выполнить преобразование кодировки из windows-1250 в utf-8, и возможно ли, что struts2 делает что-то странное с набором символов params, что объясняет, почему я не могу понять, что это правильно.
Это моя последняя попытка:
String inputData = getSimpleParamValue("some_input_param_from_get");
Charset inputCharset = Charset.forName("windows-1250");
Charset utfCharset = Charset.forName("UTF-8");
CharsetDecoder decoder = inputCharset.newDecoder();
CharsetEncoder encoder = utfCharset.newEncoder();
String decodedData = "";
try {
ByteBuffer inputBytes = ByteBuffer.wrap(inputData.getBytes()); // I've tried putting UTF-8 here as well, with no luck
CharBuffer chars = decoder.decode(inputBytes);
ByteBuffer utfBytes = encoder.encode(chars);
decodedData = new String(utfBytes.array());
} catch (CharacterCodingException e) {
logger.error(e);
}
Любые идеи о том, что попытаться заставить это работать?
Спасибо и всего наилучшего,
бозо