Я знаю, что это очень общий вопрос, но я злюсь.
Я использовал этот код:
String ucs2Content = new String(bufferToConvert, inputEncoding);
byte[] outputBuf = ucs2Content.getBytes(outputEncoding);
return outputBuf;
Но я читал, что лучше использовать CharsetDecoder и CharsetEncoder (у меня есть содержимое с некоторым символом, вероятно, вне целевой кодировки). Я только что написал этот код, но у него есть некоторые проблемы:
// Create the encoder and decoder for Win1252
Charset charsetInput = Charset.forName(inputEncoding);
CharsetDecoder decoder = charsetInput.newDecoder();
Charset charsetOutput = Charset.forName(outputEncoding);
CharsetEncoder encoder = charsetOutput.newEncoder();
// Convert the byte array from starting inputEncoding into UCS2
CharBuffer cbuf = decoder.decode(ByteBuffer.wrap(bufferToConvert));
// Convert the internal UCS2 representation into outputEncoding
ByteBuffer bbuf = encoder.encode(CharBuffer.wrap(cbuf));
return bbuf.array();
Действительно, этот код добавляет в буфер последовательность нулевого символа!!!!!
Может ли кто-нибудь сказать мне, где проблема? Я не очень разбираюсь в преобразовании кодирования в Java.
Есть ли лучший способ конвертировать кодировку в Java?