Saya memiliki String dengan karakter "ñ" dan saya memiliki beberapa masalah dengannya. Saya perlu menyandikan String ini ke pengkodean UTF-8. Saya sudah mencobanya dengan cara ini, tetapi tidak berhasil:
byte ptext[] = myString.getBytes();
String value = new String(ptext, "UTF-8");
Bagaimana cara menyandikan string itu ke utf-8?
{In,Out}putStream{Read,Writ}ers
melakukannya untuk mereka. Kenapa ya?Jawaban:
String
objek di Java menggunakan pengkodean UTF-16 yang tidak dapat dimodifikasi.Satu-satunya hal yang dapat memiliki pengkodean yang berbeda adalah a
byte[]
. Jadi, jika Anda membutuhkan data UTF-8, maka Anda memerlukanbyte[]
. Jika Anda memilikiString
yang berisi data yang tidak terduga, maka masalahnya adalah di beberapa tempat sebelumnya yang salah mengkonversi beberapa data biner keString
(yaitu menggunakan pengkodean yang salah).sumber
byte[]
, itu tidak masuk akal untukString
(kecuali pengkodean adalah UTF-16, dalam hal ini masuk akal tetapi masih informasi yang tidak perlu).String objects in Java use the UTF-16 encoding that can't be modified.
Apakah Anda memiliki sumber resmi untuk penawaran ini?Bagaimana kalau menggunakan
sumber
myString.getBytes(Charsets.UTF_8)
, dan byte -> String:new String(myByteArray, Charsets.UTF_8)
.StandardCharsets.UTF_8
. Tersedia di Java 1.7+.Di Java7 Anda dapat menggunakan:
Ini memiliki keunggulan dibandingkan
getBytes(String)
yang tidak dinyatakannyathrows UnsupportedEncodingException
.Jika Anda menggunakan versi Java yang lebih lama, Anda dapat mendeklarasikan konstanta charset sendiri:
sumber
String value = new String(myString);
.Gunakan
byte[] ptext = String.getBytes("UTF-8");
sebagai gantigetBytes()
.getBytes()
menggunakan apa yang disebut "pengodean default", yang mungkin bukan UTF-8.sumber
String Java secara internal selalu dikodekan dalam UTF-16 - tetapi Anda benar-benar harus memikirkannya seperti ini: pengkodean adalah cara untuk menerjemahkan antara Strings dan byte.
Jadi jika Anda memiliki masalah penyandian, pada saat Anda memiliki String, sudah terlambat untuk memperbaikinya. Anda perlu memperbaiki tempat Anda membuat String dari file, DB atau koneksi jaringan.
sumber
Anda bisa coba cara ini.
sumber
Sejenak saya melewati masalah ini dan berhasil menyelesaikannya dengan cara berikut
pertama saya perlu mengimpor
Kemudian saya harus mendeklarasikan konstanta untuk digunakan
UTF-8
danISO-8859-1
Maka saya bisa menggunakannya dengan cara berikut:
sumber
dan, jika Anda ingin membaca dari file teks dengan kode "ISO-8859-1" yang disandikan:
sumber
Saya telah menggunakan kode di bawah ini untuk menyandikan karakter khusus dengan menentukan format penyandian.
sumber
Panduan langkah demi langkah cepat cara mengkonfigurasi NetBeans encoding default UTF-8. Sebagai hasilnya, NetBeans akan membuat semua file baru dalam pengkodean UTF-8.
NetBeans penyandian standar panduan langkah demi langkah UTF-8
Buka folder dll di direktori instalasi NetBeans
Edit file netbeans.conf
Temukan baris netbeans_default_options
Tambahkan -J-Dfile.encoding = UTF-8 di dalam tanda kutip di dalam baris itu
(contoh
netbeans_default_options="-J-Dfile.encoding=UTF-8"
:)Mulai ulang NetBeans
Anda menetapkan NetBeans penyandian standar UTF-8.
Netbeans_default_options Anda mungkin berisi parameter tambahan di dalam tanda kutip. Dalam kasus seperti itu, tambahkan -J-Dfile.encoding = UTF-8 di akhir string. Pisahkan dengan ruang dari parameter lain.
Contoh:
di sini adalah tautan untuk Rincian Lebih Lanjut
sumber
Ini menyelesaikan masalah saya
sumber