UDPJavaアプリケーションでByteBufferを受信しています。
これで、このByteBufferのデータは、任意の言語の任意の文字列、またはゼロで区切られた任意の特殊文字にすることができます。
次のコードを使用して、そこから文字列を取得します。
public String getString() {
byte[] remainingBytes = new byte[this.byteBuffer.remaining()];
this.byteBuffer.slice().get(remainingBytes);
String dataString = new String(remainingBytes);
int stringEnd = dataString.indexOf(0);
if(stringEnd == -1) {
return null;
} else {
dataString = dataString.substring(0, stringEnd);
this.byteBuffer.position(this.byteBuffer.position() + dataString.getBytes().length + 1);
return dataString;
}
}
これらの文字列は、すべてがUTF8として設定された状態でMySQLDBに保存されます。
Windowsでアプリケーションを実行すると、®などの特殊文字が表示されますが、中国語は表示されません。
VM引数を追加すると、-Dfile.encoding = UTF8中国語が表示されますが、®などの文字は??として表示されます。等
助けてください。
編集:
UDPパケットの入力文字列は、UTF-8でエンコードされ、0x00で終了する可変長バイトフィールドです。
JDBCの場合も、useUnicode = true&characterEncoding=UTF-8を使用します