byte[]
またはInputStream
(両方のバイナリ データ) を持っている場合、次の方法で aString
またはReader
(両方のテキスト) を取得できます。
final String encoding = "UTF-8"; // "UTF16LE" or "UTF-16BE"
byte[] b = ...;
String s = new String(b, encoding);
InputStream is = ...;
BufferedReader reader = new BufferedReader(new InputStreamReader(is, encoding));
for (;;) {
String line = reader.readLine();
}
逆のプロセスでは、次を使用します。
byte[] b = s.geBytes(encoding);
OutputStream os = ...;
BufferedWriter writer = new BufferedWriter(new OuputStreamWriter(os, encoding));
writer.println(s);
Unicode は、すべての文字の番号付けシステムです。UTF バリアントは、Unicode をバイトとして実装します。
あなたの問題:
通常の方法 (Web サービス) では、既にString
. たとえば、上記の Writer を使用して、その文字列をファイルに書き込むことができます。完全な Unicode フォントで自分で確認するか、ファイルを渡して確認してください。
(?) テキストがどの UTF バリアントにあるかを確認する必要があります。アジア言語のスクリプトの場合、UTF-16 (リトル エンディアンまたはビッグ エンディアン) が最適です。XML では、すでに定義されています。
添加:
FileWriterは、(マシンのオペレーティング システムから) デフォルトのエンコーディングを使用してファイルに書き込みます。代わりに次を使用します。
new OutputStreamWriter(new FileOutputStream(new File("...")), "UTF-8")
@bobinceが言ったように、バイナリPDFの場合は、byte []またはInputStreamでFileOutputStreamのみを使用してください。