String kódolása UTF-8-ba Java-ban
1. Áttekintés
Amikor foglalkozik Húrs Java-ban, néha egy adott karakterkészletbe kell kódolnunk őket.
Ez az oktatóanyag különböző módokat bemutató gyakorlati útmutató kódolni a Húr az UTF-8 karakterkészlethez; A technikai mélyebb merüléshez lásd a Karakterkódolás útmutatót.
2. A probléma meghatározása
A Java kódolás bemutatásához együttműködünk a németel Húr „Entwickeln Sie mit Vergnügen”.
String germanString = "Entwickeln Sie mit Vergnügen"; bájt [] germanBytes = germanString.getBytes (); String asciiEncodedString = új karakterlánc (germanBytes, StandardCharsets.US_ASCII); assertNotEquals (asciiEncodedString, germanString);
Ez Húr Az US_ASCII kódolással az „Entwickeln Sie mit Vergn? gen” értéket kapjuk nyomtatáskor, mert nem érti a nem ASCII ü karaktert. De amikor konvertálunk egy ASCII-kódolást Húr amely az összes angol karaktert használja az UTF-8-hoz, ugyanazt a karakterláncot kapjuk.
String englishString = "Örömmel fejlődj"; bájt [] angolByte = angolString.getBytes (); String asciiEncondedEnglishString = új karakterlánc (angolBytes, StandardCharsets.US_ASCII); assertEquals (asciiEncondedEnglishString, englishString);
Nézzük meg, mi történik, ha az UTF-8 kódolást használjuk.
3. Kódolás Core Java-val
Kezdjük a törzskönyvtárral.
Húrs megváltoztathatatlanok a Java-ban, ami azt jelenti, hogy nem tudjuk megváltoztatni a Húr karakterkódolás. Ahhoz, hogy elérjük, amit akarunk, át kell másolnunk a Húr majd hozzon létre egy újat a kívánt kódolással.
Először megkapjuk a Húr bájtokat, majd ezt követően hozzon létre egy újat a letöltött bájtok és a kívánt karakterkészlet segítségével:
String rawString = "Entwickeln Sie mit Vergnügen"; bájt [] bájt = rawString.getBytes (StandardCharsets.UTF_8); String utf8EncodedString = új karakterlánc (bájtok, StandardCharsets.UTF_8); assertEquals (rawString, utf8EncodedString);
4. Kódolás Java 7-vel StandardCharsets
Alternatív megoldásként használhatjuk a StandardCharsets osztály ben vezették beJava 7 kódolni a Húr.
Először dekódoljuk a Húr bájtokba, másodszor pedig kódolja a Húr UTF-8-ig:
String rawString = "Entwickeln Sie mit Vergnügen"; ByteBuffer puffer = StandardCharsets.UTF_8.encode (rawString); String utf8EncodedString = StandardCharsets.UTF_8.decode (puffer) .toString (); assertEquals (rawString, utf8EncodedString);
5. Kódolás a Commons-Codec segítségével
Az alapvető Java használata mellett az Apache Commons Codec-et is használhatjuk ugyanezen eredmények elérésére.
Az Apache Commons Codec egy praktikus csomag, amely egyszerű kódolókat és dekódereket tartalmaz különböző formátumokra.
Először kezdjük a projekt konfigurációjával. A Maven használatakor hozzá kell adnunk a commons-kodek függőség a mi pom.xml:
commons-kodek commons-kodek 1.14
Akkor esetünkben a legérdekesebb osztály az StringUtils, amely módszereket kínál a kódoláshoz Húrs. Ennek az osztálynak a használatával kapunk egy UTF-8 kódolást Húr elég egyértelmű:
String rawString = "Entwickeln Sie mit Vergnügen"; byte [] bytes = StringUtils.getBytesUtf8 (rawString); String utf8EncodedString = StringUtils.newStringUtf8 (bájt); assertEquals (rawString, utf8EncodedString);
6. Következtetés
Kódolás a Húr az UTF-8-ba nem nehéz, de nem is olyan intuitív. Ez az oktatóanyag három megvalósítási módot mutat be, akár a Java Java, akár az Apache Commons Codec használatával.
Mint mindig, a kódminták megtalálhatók a GitHubon.