2

私は中国語のコンテンツを含む Excel ファイルで、それらをテーブルにインポートしたいと考えています。

私のテーブルは utf-8 照合に設定されており、Excel シートには 3 つのワークシートがあります。

ワークシートをcsvファイルに変換してインポートに使用しようとしましたが、csvファイルを開いたときに漢字が正しくありません..

そして、それらをtxtファイルに変換してからインポートしようとしましたが、何も機能していないようです..

中国語のコンテンツを mysql テーブルにインポートするにはどうすればよいですか?

アップデート:

私はあなたの答えを試しましたが、うまくいきませんでした..だから私は彼のネイティブOSからクライアントに新しいファイルを求めました。クライアントから中国語のデータを含む .csv ファイルが送られてきました。Excel で開いたところ、奇妙な文字が含まれていましたが、dreamweaver を使用して開いたところ、中国語の文字が表示されました。

それを使用してデータをインポートしようとするとload data、データベース内に同じ奇妙な文字が含まれています..次に、ファイルをサーバーにアップロードし、phpスクリプトを使用してデータベースに挿入しようとしましたが、動作しません..

私が使ったスクリプト

<?php
  header('Content-type: text/html; charset=utf-8');
  include("includes/config.php");
  db_connect();
  mysql_query("SET NAMES utf8");
  $file = fopen("../file.csv", "r");
  $i = 0;
  while (!feof($file)) {
      $arr = fgetcsv($file);
      $qry = "insert into tbl_wine_tasting_notes
    (`color` , `name` , `producer` , `vintage` , `size` , `country` , `region` ,
    `sub_region` , `comments` , `alcohol` , `points` , `varietals` ,
    `website`,`label`)
    values 
    ('" . implode("','", $arr) . "')";

      mysql_query("SET NAMES utf8");
      mysql_query($qry);
  }
  fclose($file);
?> 

それをエコーし​​たとき、qryステートメントは正しかったのですが、1行も挿入されませんでした..

これの何が問題なのですか?私はそれらをアップロードする必要があります..

4

5 に答える 5

3

iconvを使用して、以下の主要な中国語エンコーディングから.csvファイルを変換し、UTF-8に変換してみてください。エラーが発生しないエンコーディングの最初の「-f」は、.csvファイルの正しいエンコーディングになります。iconvを使用するシステムのコマンドラインから、次のことを試してください。

iconv -f [Chinese encoding] -t UTF-8 [filename].csv > [filename]_utf8.csv

-fフラグの値については、次を試してください。

  1. CP936
  2. GB18030
  3. BIG-5

たとえば、.csvファイルはおそらく中国のWindows環境で作成されていると思いますので、これは機能する可能性があります。

iconv -f CP936 -t UTF-8 [filename].csv > [filename]_utf8.csv

次に、UTF-8対応のテキストエディタで[filename] _utf8.csvを開き、中国語が正しく表示されることを確認できます。データベースにデータをロードするために使用するのは、このUTF-8でエンコードされた[filename]_utf8.csvファイルです。

于 2011-04-27T17:02:08.563 に答える
1

UTF-8 エンコーディングのデータベースにデータを挿入する場合は、UTF-8 でエンコードされた文字列を挿入していることを確認する必要があります。ブルザエモンが言ったように、CSV ファイルはおそらく CP936、BIG-5、または GB18030 でエンコードされています。

mb_convert_encoding(str, to, [from]) を使用して、PHP でエンコーディングを別のエンコーディングに変換できます。ファイルのエンコーディングが不明なため、次の方法で自動検出を試みることができます。

<?php
  header('Content-type: text/html; charset=utf-8');
  include("includes/config.php");
  db_connect();
  mysql_query("SET NAMES utf8");
  $file = fopen("../file.csv", "r");
  $i = 0;
  while (!feof($file)) {

    $arr = fgetcsv($file);
    foreach ($arr as $key => $item) { 
       $arr[$key] = mb_convert_encoding($item, 'UTF-8', 'CP936, GB18030, BIG-5');
    }

      $qry = "insert into tbl_wine_tasting_notes
      (`color` , `name` , `producer` , `vintage` , `size` , `country` , `region` ,
       `sub_region` , `comments` , `alcohol` , `points` , `varietals` ,
       `website`,`label`)
        values 
      ('" . implode("','", $arr) . "')";

    mysql_query("SET NAMES utf8");
    mysql_query($qry);
 }
 fclose($file);
?> 

ここで mb_convert_encoding のドキュメントを見ることができます:

于 2011-05-02T01:24:24.493 に答える
0

utf8 ではなく unicode を読んでいる可能性があることを示唆する以外に、文字セットの問題についてコメントすることはできません。ただし、別のアプローチが機能する場合があります。

PHPExcelは、Excel ファイルを直接操作するのに便利であることがわかりました。大きな利点は、これが純粋な PHP 実装であるため、*NIX または Mac サーバー上で、Excel を搭載した Windows マシンと同じように問題なく動作することです。

于 2011-04-25T07:42:37.450 に答える
0
  1. Excelからcsvにエクスポートし、
  2. notepad++ などのテキスト エディターを使用して、エンコーディングを DOM なしで UTF-8 に変更します。
  3. phpmyadmin経由でdbにインポート
于 2011-04-07T07:28:02.657 に答える
0

また、 dbForge Studio for MySQLのデータ インポート ツールを使用して、xls データを直接インポートすることもできます。コマンドラインがサポートされています。

于 2011-04-07T07:41:09.167 に答える