Dize dönüştürme bayt dizisi (Java)
Google app Engine bir web uygulaması yazıyorum. İnsanlar temelde blobstore .html
dosyası olarak saklanan bir html kodu düzenleme sağlar.
FetchData dosyadaki tüm karakterler byte[]
dönüş için kullanıyorum. Kullanıcı için bir html kodu düzenleme için baskı yapmaya çalışıyorum. Her şey mükemmel çalışıyor!
İşte şimdi tek sorunum:
Bayt dizisinin tekrar bir dizeye dönüştürme sırasında bazı sorunları var. Akıllı tırnaklar ve birkaç karakter funky görünümlü çıkıyor. (?'s veya Japonca semboller vb.) Özellikle negatif değerler görüyorum soruna neden olan birkaç bayt.
Akıllı tırnaklar geri -108
ve bayt dizisi -109
gibi geliyor. Neden bu kadar doğru karakter kodlamasını göstermek için negatif bayt çözebilir miyim?
CEVAP
Bayt dizisinin özel bir kodlama karakterleri bilmeli () içerir. Bir Dize dönüştürmek için bir yoldur:
String decoded = new String(bytes, "UTF-8"); // example for one encoding type
- Ham bayt görünür 8 ** java türü imzalı olduğu için negatif ondalık olarak görünebilir, 127 -128 aralığı kapsar.
-109 = 0x93: Control Code "Set Transmit State"
Değeri (-109) UNİCODE olmayan yazdırılabilir bir denetim karakteri. UTF-8 karakter akışı için doğru bir kodlama değildir.
0x93
"Windows-1252" "akıllı alıntı kodlama Java ismi çok aradığınız","". Cp1252 içinde Sonraki satır test kodu sağlar:
System.out.println(new String(new byte[]{-109}, "Cp1252"));
Bir kodlama kullanmadan bayt dizisi iç...
Nasıl Onaltılık Dize ve Başkan versa i...
Nasıl Java hex bir dize bir bayt dizis...
Bir bayt dizisi Java kullanarak bir he...
Java, nasıl sıfırları tutarken hex bas...