私のバージョンの Excel は中国語に問題があるため、代わりにロシア語を選択することにしました。キリル文字は Unicode に十分に溶け込んでいるため、これを機能させることができれば、中国語を機能させることができるはずです。
あなたのコードは近いですが、2 つの問題があります。
UTF-16 は、ビッグ エンディアンまたはリトル エンディアンのいずれかです。Java charset 名の「UTF-16」は、実際にはビッグ エンディアン エンコーディングの UTF-16 を意味します。Microsoft は、常にリトルエンディアンをデフォルトとして使用します。文字セット「UTF-16LE」を使用する必要があります
ファイルの先頭にバイト オーダー マーク (BOM)を付けて、このエンコーディングを使用していることを Excel に警告する必要があります。2 バイトの 0xFF の後に 0xFE が続くだけです。
これは、「戦争と平和」をロシア語で各単語を別々の列に出力する簡単なプログラムです。結果のファイルは Excel にインポートできます。ロシア語のテキストを中国語のテキストに置き換えるだけです。
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
public class Russian
{
public static void main(String [] args) throws Exception
{
byte [] bom = { (byte) 0xFF, (byte) 0xFE};
String text = "ВОЙНА,И,МИР";
FileOutputStream fout = new FileOutputStream("WarAndPeace.csv");
fout.write(bom);
OutputStreamWriter out = new OutputStreamWriter(fout, "UTF-16LE");
out.write(text);
out.close();;
}
}