2

我是一个 excel 文件,其中有中文内容,我想将它们导入到我的表格中。

我的表设置为 utf-8 排序规则,我的 excel 表有三个工作表。

当我尝试将工作表转换为 csv 文件并使用它们进行导入时,但是当我打开 csv 文件时,它没有正确的中文字符..

我试图将它们转换为 txt 文件,然后导入,但似乎没有任何效果..

如何将中文内容导入我的 mysql 表?

更新:

我尝试了你的答案,但没有按照我的方式工作。所以我从客户的本机操作系统中要求提供一个新文件。我的客户向我发送了带有中文数据的 .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 语句是正确的,但它甚至没有插入一行..

这有什么问题?我需要他们上传它们..

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. 大五

例如,我猜你的 .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 编码的字符串。就像 buruzaemon 所说,您的 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
  1. 从excel导出到csv,
  2. 使用notepad++之类的文本编辑器将编码更改为没有DOM的UTF-8,
  3. 通过 phpmyadmin 导入数据库
于 2011-04-07T07:28:02.657 回答
0

此外,您可以使用dbForge Studio for MySQL中的数据导入工具直接导入 xls 数据。支持命令行。

于 2011-04-07T07:41:09.167 回答
0

除了建议您可能正在阅读 unicode 而不是 utf8 之外,我无法对字符集问题发表评论。然而,另一种方法可能会奏效。

我发现PHPExcel对于直接处理 Excel 文件很有用。一个很大的优点是它是一个纯 PHP 实现,因此在 *NIX 或 Mac 服务器上运行起来就像在带有 Excel 的 Windows 机器上一样愉快。

于 2011-04-25T07:42:37.450 回答