🎱
ProcessingでbyteデータをUTF-8のStringにする方法
Unityから日本語の文字データをbyte配列にしてProcessingに送信したら,文字化けが起きました.
サーバー側(Processing)
import processing.net.*;
import java.nio.charset.StandardCharsets;
Server server;
void setup() {
server = new Server(this, 5555);
}
void draw() {
Client c = server.available();
if (c != null) {
String s = c.readStringUntil('\n');
println(s);//文字化け
}
}
調べてみたらやっぱりUTF-8になってないのが原因のようでした.
下のように書けば解決しました
import processing.net.*;
import java.nio.charset.StandardCharsets;
Server server;
void setup() {
server = new Server(this, 5555);
println("start server at address: " + server.ip());
}
void draw() {
Client c = server.available();
if (c != null) {
byte[] b = c.readBytes();
String s = new String(b, StandardCharsets.UTF_8);
println(s);//送信した通りに表示
}
}
Discussion