javaのCSVファイルを出力する時について質問です
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ConnectTest {
public static void main(String args[]) throws Exception {
// TODO 自動生成されたメソッド・スタブ
/*
* 接続先のサーバー名を"localhost"で与えることを示してる
*/
// String severname = "localhost";
/*
* 接続するデータベース名をMySQLとしてる
*/
String databasename = "companydata";
String username = "root";
String password = "root";
/*
* デフォルトencodeをUTF-8に指定
*/
//String severencoding = "UTF-8";
/*
* データベースのURLを指定
*/
String url = "jdbc:mysql://localhost:3306/" + databasename;
/*
* オブジェクトConnectionを初期化
*/
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
/*
* DriverManagerクラスのgetConnectionを使ってデータベースにアクセス
*/
con = DriverManager.getConnection(url, username, password);
System.out.println("Connected......");
Statement st = con.createStatement();
String sqlStr = "SELECT * FROM empinfo;";
ResultSet result = st.executeQuery(sqlStr);
while (result.next()) {
String str1 = result.getString("empCd");
String str2 = result.getString("name");
String str3 = result.getString("birthday");
String str4 = result.getString("countryCd");
String str5 = result.getString("sexCd");
String all = str1 + "," + str2 + "," + str3 + "," + str4 + "," + str5;
System.out.println(all);
try {
//FileWriter fw = new FileWriter("C:\\Users\\liu\\Desktop\\test.csv", true);
PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream("C:\\Users\\liu\\Desktop\\test.csv", true),"utf-8")));
pw.write(0xef); // こちらにBOMをつけた
pw.println(all);
pw.close();
} catch (IOException e) {
// TODO: handle exception
System.out.println(e.getMessage());
}
}
System.out.println("出力完了!");
result.close();
st.close();
con.close();
} catch (SQLException e) {
// TODO: handle exception
System.out.println("Connection Failed : " + e.toString());
throw new Exception();
} catch (ClassNotFoundException e) {
// TODO: handle exception
System.out.println("ドライバーを読み込めませんでした " + e);
}
finally{
try {
if (con != null) {
con.close();
}
} catch (Exception e) {
// TODO: handle exception
System.out.println("Exception2! : " + e.toString());
}
}
}
}
JAVAの初心者ですが、今はMySQLのデータを検索して、
そして結果をCSVファイルに出力したいです。
以下の状態になってしまいました。
UTF-8を指定したはずですが、
効いてないようです。
追記:先ほどちょっと試しにcsvじゃなく、txtファイルに出力してみました。txtファイルなら問題ない模様です。
文字化けだけでなくて、出力の書式も崩れたようです。
追記2:
vscodeで開いてみましたが、
冒頭の部分に変な文字列が入っているようです。
PS:こちらはBOMを付けた結果です。自分の勘違いです。
追記3:
コンソールでは問題なし
どこが間違ているのですか。
ご指摘のほど宜しくお願い致します。