Ist es notwendig, char * in jbyteArray umzuwandeln, dann den Konstruktor von java String aufzurufen, um ein jstring zu generieren? Wie sonst kann es gemacht werden? Bitte helfen Sie.
%Vor% Dies hängt von der Art der char *
-Zeichenfolge ab. NewStringUTF
kopiert von einer 0-terminierten, modifizierten UTF-8 Codierung von Unicode-Zeichen. NewString
kopiert von einer gezählten, UTF-16 Codierung von Unicode-Zeichen. Wenn Sie keines von beiden haben, müssen Sie eine Konvertierung durchführen.
Viel Code, der NewStringUTF
verwendet, wird mit der Annahme geschrieben, dass die Zeichenfolge NULL-terminiertes ASCII ist. Wenn diese Annahme richtig ist, wird es funktionieren, weil die modifizierte UTF-8-Codierung und die ASCII-Codierung die gleiche Byte-Sequenz erzeugen würden. Ein solcher Code sollte eindeutig kommentiert werden, um die Beschränkung der String-Daten zu dokumentieren.
Die Konvertierungsmethode, die Sie zum Aufrufen von Java-Funktionen verwenden (z. B. String (Byte [] Bytes, Charset Zeichensatz) ) - ist ein guter. Eine Alternative (in Windows sehe ich, dass Sie Visual Studio verwenden) ist MultiByteToWideChar . Eine andere Alternative ist iconv.
Unterm Strich: Sie müssen wissen, was Zeichensatz und Codierung Ihre Zeichenfolge ist verwendet und konvertiert es dann in einen UTF-16-codierten Unicode zur Verwendung als Java-String.