どうに変換すバイナリデータを文字列となっておりJava?
-
09-06-2019 - |
質問
私はバイナリデータファイルできたらいいのに読み込むバイト配列過程ても問題ありません。今必要な送信部品のデータをネットワーク接続の構成要素としてのXML文書です。私の問題は、私がデータに変換バイト配列から文字列であり、バイト配列のデータが破損しています。私はこの試験片の機械分離の問題を文字列に変換っていく崩れのXMLパーサーのネットワークです。
どんなには
byte[] buffer = ...; // read from file
// a few lines that prove I can process the data successfully
String element = new String(buffer);
byte[] newBuffer = element.getBytes();
// a few lines that try to process newBuffer and fail because it is not the same data anymore
というかバイナリに変換する文字列となデータの損失?
回答:コSam.のように感じて新作ゲーム更新おつです私はこの答えは昨日、私のSAXパーサ?)何らかの理由がっこうに別の問題ではなかったがってくるということになった症状のあるものではないです。
編集:の完成度を採用していま Base64 クラスから Apache Commons コーデック パッケージの必要がありません。
解決
場合はエンコードではbase64でエンコードは、このまま任意のデータをasciiへの安全なテキストがbase64符号化されたデータより大きいorignalデータ
他のヒント
String(byte[]) のデータとしてデフォルトの文字エンコーディングです。などなどにバイトに変換され8ビットの値の16-bitのJava Unicode文字数は変わりというだけでなく経営システムでも異なるユーザーを用codepages同じ。このコンストラクタは復号に自分のテキストファイルです。なに変換しようとし任意のバイト文字をJava!
エンコードとして base64 良い解決策です。こうしてファイルは送信されSMTPメール(e-mail).(無料)-Apache コモンズコーデック プロジェクトの仕事です。
byte[] bytes = loadFile(file);
//all chars in encoded are guaranteed to be 7-bit ASCII
byte[] encoded = Base64.encodeBase64(bytes);
String printMe = new String(encoded, "US-ASCII");
System.out.println(printMe);
byte[] decoded = Base64.decodeBase64(encoded);
使用できるJava6 DatatypeConverter:
import java.io.*;
import java.nio.channels.*;
import javax.xml.bind.DatatypeConverter;
public class EncodeDecode {
public static void main(String[] args) throws Exception {
File file = new File("/bin/ls");
byte[] bytes = loadFile(file, new ByteArrayOutputStream()).toByteArray();
String encoded = DatatypeConverter.printBase64Binary(bytes);
System.out.println(encoded);
byte[] decoded = DatatypeConverter.parseBase64Binary(encoded);
// check
for (int i = 0; i < bytes.length; i++) {
assert bytes[i] == decoded[i];
}
}
private static <T extends OutputStream> T loadFile(File file, T out)
throws IOException {
FileChannel in = new FileInputStream(file).getChannel();
try {
assert in.size() == in.transferTo(0, in.size(), Channels.newChannel(out));
return out;
} finally {
in.close();
}
}
}
この質問は、 いかだに組み込むバイナリデータをXML? の代わりに変換するのbyteバッファがダイレクトバッファに文字列を押してXMLから変換できるのbyteバッファがダイレクトバッファを文字列によBASE64エンコーディング(一部のXMLライブラリ型います。は、BASE64デコードまずはしっかりとした文字列から形式をサポートしています。
使用 http://commons.apache.org/codec/
データが取得すぐに伴う変な文字セットの制約の存在を非priting文字です。棒w/BASE64.
こんにちは建物のXML文書?ご利用の場合javaのXMLでの授業に文字列エンコードの取り扱いにあたっています。
のjavax.xml やorg.xml パッケージ。私たちは、これを成XMLドキュメント、および取り扱うすべての文字列に符号化と復号化あります。
---編集:
Hmmと思ってい誤解される。ないようにエンコード通常の文字列がセットの任意のバイナリデータはもらえますか?その場合は、Base64エンコーディング示唆されたコメントは、かかるものと思われます。と思うことになるかによって標準のエンコードバイナリデータ形式をサポートしています。