我是一个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语句是正确的,但它甚至没有插入一行..
这有什么问题?我需要他们上传它们..
答案 0 :(得分:3)
尝试使用iconv转换.csv文件从转换下面的主要中文编码,将转换为UTF-8 。来自编码的第一个'-f'不会导致错误,它将是.csv文件的正确编码。从具有iconv的系统上的命令行,尝试:
iconv -f [Chinese encoding] -t UTF-8 [filename].csv > [filename]_utf8.csv
对于-f标志值,请尝试:
例如,我猜你的.csv文件可能是在中文Windows环境下创建的,所以这可行:
iconv -f CP936 -t UTF-8 [filename].csv > [filename]_utf8.csv
然后,您可以在UTF-8友好文本编辑器中打开[filename] _utf8.csv并查看正确显示的中文。这是用于将数据加载到数据库中的UTF-8编码的[filename] _utf8.csv文件。
答案 1 :(得分:0)
答案 2 :(得分:0)
此外,您可以使用dbForge Studio for MySQL中的数据导入工具直接执行xls数据导入。支持命令行。
答案 3 :(得分:0)
除了暗示您可能正在阅读unicode而不是utf8之外,我无法对charset问题发表评论。 然而替代方法可能有用。
我发现PHPExcel对于直接使用Excel文件非常有用。一个很大的优点是它是一个纯PHP实现,所以在* NIX或Mac服务器上作为带有Excel的Windows机器运行愉快。
答案 4 :(得分:0)
如果要将数据插入到具有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的文档: