エクセルで作成したcsvファイルをphpファイルでサーバーのmysqlへインポートすると文字化けする


いつもお世話になっております。

ネット上のサイトにて拝見致しました以下のphpファイルの記述を元に、ローカル上で作成したエクセルのcsvファイルをサーバーのmysqlへインポートするとエクセル上でタイプした時点では日本語は当然のことながら問題なく表示されておりますし、データ自体もインポートされますが、mysql上で日本語が文字化けしてしまいます。

どのようにすれば文字化けせずにインポートできるかお教え願いませんでしょうか？（英語は問題ないと思われますが、他の言語も文字化けしないような設定方法をお教えいたただければ有難いです。）

[code]

    <form method="post" action="ファイル名.php" enctype="multipart/form-data">
    <input type="file" name="csvfile" /><br />
    <input type="submit" name="csvsub" value="csv呼出" /><br />
    </form>
    
    <?php
    //フォームから送られたデータは、   $_FILES["csvfile"]["tmp_name"]で受け取ることができる。
    $tmp = fopen($_FILES['csvfile']   ['tmp_name'], "r");
    
    while ($csv[] = fgetcsv($tmp, "1024")) {}
    //fopen()関数で、ファイルを開く。"r"というのは「読み込み専用」という指示です。
    //ここで2次元配列にする。fgetcsv()関数により、csvデータを読み込む。
    
     mb_convert_variables("UTF-8", "SJIS-win", $csv);
     //文字化け防止のため、UTF-8に変換する// 配列  $csv の文字コードをSJIS-winからUTF-8に変換
    
    
     $lim = count($csv);//for文で読み込むために、配列の最大行数を出す
    
     for($i=0; $i<=$lim; $i++){
     if($i < ($lim-1)){
     $ar = $csv[$i];
     $aaa = implode("\",\"", $ar);
     //echo $aaa,"\n";
    
     $host = "サーバホスト";
     $mysql_user = "ユーザ名";
     $mysql_password = "パスワード";
     $db = "データベース名";
     $tb = "テーブル名";
    
     $cn = mysql_connect($host,$mysql_user,$mysql_password);
     if(!$cn){
         die("db connect Error");
     }
     if(!(mysql_select_db("$db"))){
         die("db select error");
     }
    
     $sql = "INSERT INTO tb1 VALUES(\"$aaa\");";
    
     echo $sql;
     $query = mysql_query($sql);
     mysql_close($cn);
     }
    
     }
     ?>
    
[/code]

Plesk バージョン： 17.0.17  
構成名： Plesk 12 Web Admin for Linux  
PHP： 5.3.3  
OS: ‪CentOS 6.9  
MySQL:5.1.73  
エクセル2010




excelでUTF8でCSV保存する方法です。参考にしてください。  
<https://did2memo.net/2016/11/14/excel-csv-utf8/>




日本語文字コードの違いによるものと思われます。

Excelで作成されたファイルは、Windowsのマシンで作られている訳ですからの日本語文字コードは、Shift-JISのはずです。

それに対して、CentOSの文字コードはUTF8です。  
文字化けは、shift-JISのファイルをUTF8のファイルだと判断して表示したことで起きたのだと思われます。

文字コードが違っているのですから、文字コードを変換するプログラムを使ってExcelのファイルをUTF8に変えることで解決すると思います。

