SORU
17 Mart 2009, Salı


Dönüştürme UTF-8 Tek bayt olarak tutmak için nasıl-8859-1, ISO Java -

Bir dize UTF-8 olarak kodlanmış java-8859-1, ISO dönüştürmek için çalışıyorum. Dize örneğin, 'A' 'A' ISO-8859-1 olarak E2. temsil edilmektedir âabcd demek UTF-8'de iki bayt olarak temsil edilir. C3 A2 inanıyorum. Ben bir getbytes(kodlama) ve bayt ile yeni bir dize oluşturmak-8859-1, ISO sonra kodlama, iki farklı karakter. â. Karakteri yani âabcd aynı tutacak şekilde yapmanın başka bir yolu var mı?

CEVAP
17 Mart 2009, Salı


Eğer karşınıza alıyorsunuz karakter kodlamaları dışında UTF-16, olmamalısın kullanma java.lang.String char ilkel ... sadece kullanma byte[] diziler ByteBuffer nesneler. Sonra, java.nio.charset.Charset kodlamaları arasında dönüştürmek için kullanabilirsiniz:

Charset utf8charset = Charset.forName("UTF-8");
Charset iso88591charset = Charset.forName("ISO-8859-1");

ByteBuffer inputBuffer = ByteBuffer.wrap(new byte[]{(byte)0xC3, (byte)0xA2});

// decode UTF-8
CharBuffer data = utf8charset.decode(inputBuffer);

// encode ISO-8559-1
ByteBuffer outputBuffer = iso88591charset.encode(data);
byte[] outputData = outputBuffer.array();

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • edwin maldonado

    edwin maldon

    28 Mart 2009
  • Fuse

    Fuse

    21 Kasım 2005
  • Ricardo Cerqueira

    Ricardo Cerq

    28 Mayıs 2008