Encode String UTF-8

Saya memiliki sebuah String dengan ",ñ" karakter dan saya memiliki beberapa masalah dengan itu. Saya perlu untuk mengkodekan String ini ke UTF-8 encoding. Saya telah mencoba dengan cara ini, tapi itu doesn't bekerja:

byte ptext[] = myString.getBytes();
String value = new String(ptext, "UTF-8");

Bagaimana cara mengkodekan string utf-8?

Mengomentari pertanyaan (9)

Bagaimana menggunakan

ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(myString)
Komentar (6)
Larutan

String benda-benda di Jawa menggunakan encoding UTF-16 yang bisa't dapat diubah.

Satu-satunya hal yang dapat memiliki encoding yang berbeda adalah byte[]. Jadi, jika anda membutuhkan data UTF-8, maka anda perlu byte[]. Jika anda memiliki String yang berisi data yang tak terduga, maka masalah ini di beberapa sebelumnya di tempat yang salah dikonversi beberapa data biner ke String (yaitu, itu adalah menggunakan pengkodean yang salah).

Komentar (4)

Di Java7 dapat anda gunakan:

import static java.nio.charset.StandardCharsets.*;

byte[] ptext = myString.getBytes(ISO_8859_1); 
String value = new String(ptext, UTF_8); 

Ini memiliki keuntungan lebih dari getBytes(String) bahwa itu tidak menyatakan melempar UnsupportedEncodingException.

Jika anda're menggunakan aplikasi yang lebih tua versi Jawa yang anda dapat mendeklarasikan charset konstanta diri sendiri:

import java.nio.charset.Charset;

public class StandardCharsets {
    public static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1");
    public static final Charset UTF_8 = Charset.forName("UTF-8");
    //....
}
Komentar (5)

Gunakan byte[] ptext = String.getBytes("UTF-8"); bukan getBytes(). getBytes() menggunakan apa yang disebut "pengkodean default", yang mungkin tidak UTF-8.

Komentar (5)

Java String internal selalu dikodekan dalam UTF-16 - tetapi anda benar-benar harus berpikir tentang hal seperti ini: encoding adalah cara untuk menerjemahkan antara String dan byte.

Jadi jika anda memiliki pengkodean masalah, dengan waktu yang anda miliki String, it's terlalu terlambat untuk memperbaiki. Yang anda butuhkan untuk memperbaiki tempat di mana anda membuat String dari file, DB atau koneksi jaringan.

Komentar (6)

Anda dapat mencoba cara ini.

byte ptext[] = myString.getBytes("ISO-8859-1"); 
String value = new String(ptext, "UTF-8"); 
Komentar (2)

Di saat aku pergi melalui masalah ini dan berhasil menyelesaikannya dengan cara berikut

pertama saya perlu impor

import java.nio.charset.Charset;

Kemudian saya harus menyatakan konstan untuk menggunakan UTF-8 dan ISO-8859-1

private static final Charset UTF_8 = Charset.forName("UTF-8");
private static final Charset ISO = Charset.forName("ISO-8859-1");

Kemudian saya bisa menggunakannya dengan cara berikut:

String textwithaccent="Thís ís a text with accent";
String textwithletter="Ñandú";

text1 = new String(textwithaccent.getBytes(ISO), UTF_8);
text2 = new String(textwithletter.getBytes(ISO),UTF_8);
Komentar (1)
String value = new String(myString.getBytes("UTF-8"));

dan, jika anda ingin membaca dari file teks dengan "ISO-8859-1" dikodekan:

String line;
String f = "C:\\MyPath\\MyFile.txt";
try {
    BufferedReader br = Files.newBufferedReader(Paths.get(f), Charset.forName("ISO-8859-1"));
    while ((line = br.readLine()) != null) {
        System.out.println(new String(line.getBytes("UTF-8")));
    }
} catch (IOException ex) {
    //...
}
Komentar (0)

Saya telah menggunakan kode di bawah ini untuk mengkodekan karakter khusus dengan menentukan encode format.

String text = "This is an example é";
byte[] byteText = text.getBytes(Charset.forName("UTF-8"));
//To get original string from byte.
String originalString= new String(byteText , "UTF-8");
Komentar (0)

Cepat langkah-demi-langkah panduan bagaimana untuk mengkonfigurasi NetBeans default encoding UTF-8. Dalam hasil NetBeans akan membuat semua file baru di UTF-8 encoding.

NetBeans default encoding UTF-8 langkah-demi-langkah panduan

  • Pergi ke folder etc di direktori instalasi NetBeans
  • Edit dengan netbeans.conf
  • Menemukan netbeans_default_options baris
  • Menambah -J-Dfile.encoding=UTF-8 dalam tanda kutip di dalam garis itu

(contoh: netbeans_default_options="-J-Dfile.encoding=UTF-8")

  • Restart NetBeans

Anda mengatur NetBeans default encoding UTF-8.

Anda netbeans_default_options mungkin berisi parameter tambahan di dalam tanda kutip. Dalam kasus seperti ini, add-J-Dfile.encoding=UTF-8 pada akhir dari string. Terpisah dengan ruang dari parameter-parameter yang lain.

Contoh:

netbeans_default_options="-J-klien -J-Xss128m -J-Xms256m -J-XX:PermSize=32m -J-belang-belang.laf.useScreenMenuBar=true -J-belang-belang.awt.grafis.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Dsun.java2d.dpiaware=true -J-Dsun.zip.disableMemoryMapping=true -J-Dfile.encoding=UTF-8"

berikut ini adalah link untuk Rincian lebih Lanjut

Komentar (0)

Ini memecahkan masalah saya

    String inputText = "some text with escaped chars"
    InputStream is = new ByteArrayInputStream(inputText.getBytes("UTF-8"));
Komentar (0)