私は何かをデバッグしようとしているし、次のコードは、これまで真空でないUTF-8バイト配列から空のJava文字列を作成できますか?
public boolean impossible(byte[] myBytes) {
if (myBytes.length == 0)
return false;
String string = new String(myBytes, "UTF-8");
return string.length() == 0;
}
を返すことができる場合、私は思ったんだけど、私はそれを渡すことができますいくつかの値がtrueを返しますありますか?私は2バイトのシーケンスの最初のバイトだけを渡すことで手抜きをしましたが、それでも1つの文字列が生成されます。
これを明らかにするために、GCJでコンパイルされたJava 1.4コードのPowerPCチップで、ネイティブのバイナリ実行可能ファイルが作成されました。これは、基本的に、ほとんどのベットがオフであることを意味します。私は、Javaの「通常の」振る舞い、あるいはJavaの仕様が何か約束をしたのかどうか、ほとんど疑問に思います。
残念ながら、JavaはUTF-8 BOMを正しく処理しません。それはまったく扱いません。それをコンテンツの一部として扱うだけです –