Php MySQL:“;“加载数据本地填充”;以';结尾的字段失败μ';
我用Java导出一个UTF-8格式的CSV文件。字段终止的字符是微符号。结果MySQL将整个csv行导入到第一个表字段中Php MySQL:“;“加载数据本地填充”;以';结尾的字段失败μ';,php,mysql,csv,load-data-infile,Php,Mysql,Csv,Load Data Infile,我用Java导出一个UTF-8格式的CSV文件。字段终止的字符是微符号。结果MySQL将整个csv行导入到第一个表字段中 $sql = "LOAD DATA LOCAL INFILE 'C:/file.mysql'" . " INTO TABLE `test`" . " CHARACTER SET 'utf8'" . " FIELDS TERMINATED BY 'μ'" . " LINES TERMINATED BY '\n'"; 数据库编码为
$sql = "LOAD DATA LOCAL INFILE 'C:/file.mysql'"
. " INTO TABLE `test`"
. " CHARACTER SET 'utf8'"
. " FIELDS TERMINATED BY 'μ'"
. " LINES TERMINATED BY '\n'";
数据库编码为utf8。我尝试了mysql\u查询(“设置名称'utf8'”$con);
mysql_查询(“设置字符集'utf8'”$con);
mysql\u set\u字符集('utf8',$con)代码>
在加载数据查询之前
我还尝试将“|”设置为字段终止符。这很有效
//编辑:它也可以与SQL Server(mssql)配合使用。听起来很奇怪。。。您提到的这两个μ
字符可能实际上是两个看起来相同的不同utf符号吗?这就解释了这个行为……您是否尝试过使用诸如notepad++之类的utf8编辑器打开csv文件,并将分隔符从csv文件复制到您的变量中?您还可以尝试编写一些脚本来检查μ
是否真的是分隔符,例如使用fgetcsv()
或explode()
。您还应该检查mysql数据库连接是否设置为utf8
@arkascha如何确保使用正确的符号@piotrekkr explode()工作正常。我试着将所有地方的编码都切换到latin1/cp1252,其中只有一个μ。同样的问题。检查模糊utf序列的最佳测试是使用hexeditor。打开文件并检查问题位置上的数字代码。使用“head-2 | od-x”比查找十六进制编辑器更容易。行上的最后一个字符是否与mu字符的UTF-8码点的十六进制值匹配?