[JAVA] Erstellen Sie Ihre eigene Codierung für String.getBytes ()

Erstellen Sie Ihre eigene Codierung für String.getBytes ()

private static final Map<Character, byte[]>  conversionCharsetMap = new LinkedHashMap<Character, byte[]>(){
	{
		put('~', new byte[]{(byte) 0x81, (byte) 0x60});
		put('-', new byte[]{(byte) 0x81, (byte) 0x7C});
		put('¢', new byte[]{(byte) 0x81, (byte) 0x91});
		put('£', new byte[]{(byte) 0x81, (byte) 0x92});
		put('¬', new byte[]{(byte) 0x81, (byte) 0xCA});
		put('―', new byte[]{(byte) 0x81, (byte) 0x5C});
		put('∥', new byte[]{(byte) 0x81, (byte) 0x61});
	}
 };

public byte[] encode(String str, String charsetName){

	Charset charset = Charset.forName(charsetName);

	CharsetEncoder encoder = charset.newEncoder();

	CharBuffer inBuf = CharBuffer.wrap(str);

	ByteBuffer outBuf = ByteBuffer.allocate(inBuf.length() * (int)encoder.maxBytesPerChar());

	CoderResult result;

	//Schleife, während CoderResult einen Fehler zurückgibt
	while((result = encoder.encode(inBuf, outBuf, true)).isError()) {

		//zurücksetzen
		encoder.reset();

		//Wenn keine Zuordnung möglich ist
		//Zum Beispiel TF-8⇒SJIS(Nicht MS932)Zeichen, die in ~ ∥- ¢ £ ¬― usw. fehlschlagen. Geben Sie hier ein
		if(result.isUnmappable()) {

			//Holen Sie sich 1 Zeichen (Zeichen, dessen Zuordnung fehlgeschlagen ist)
			char ch = inBuf.get();
			byte[] val = null;

			//Legen Sie fest, was zu tun ist, wenn die Zuordnung in diesem Bereich fehlschlägt
			//Hier wird der Bytecode für SJIS des Zeichens, das nicht zugeordnet werden konnte, aus der Karte erhalten.
			val = conversionCharsetMap.get(ch);


			//Zum Codieren des Ergebnisses in den Bytepuffer legen
			outBuf.put(val);
		}
		//Illegale Eingabe
		if(result.isMalformed()) {
			//Dies ist grundsätzlich selten.
		}
	}

	//Flash zum Codieren des Ergebnispuffers
	encoder.flush(outBuf);

	//Den Puffer umdrehen(Umkehren)Zurück zur Startposition
	outBuf.flip();

	return Arrays.copyOf(outBuf.array(), outBuf.limit());
}

Recommended Posts

Erstellen Sie Ihre eigene Codierung für String.getBytes ()
Erstellen Sie Ihre eigene Android-App für das Java-Lernen
Erstellen Sie Ihre eigenen Java-Anmerkungen
Erstellen Sie Ihre eigene Solr-Funktionsabfrage
Erstellen Sie Ihren eigenen Validator mit Bean Validation
Verwendung der Talend-Komponente (5) Erstellen Sie Ihre eigene Komponente
Erstellen Sie Ihr eigenes Dienstprogramm mit Thymeleaf mit Spring Boot
[Einführung in die Java-Datenstruktur] Erstellen Sie Ihre eigene schnelle ArrayDeque für den primitiven Typ
Machen Sie Ihren eigenen Pomodoro
Erstellen Sie in Eclipse eine Basis für Ihr Stapelverarbeitungsprojekt.
Erstellen Sie erweiterte Funktionen für Yellowfin
Erstellen Sie Ihr eigenes Elasticsearch-Plugin
So erstellen Sie mit Spring Boot einen eigenen Controller, der / error entspricht