【发布时间】:2017-01-09 16:25:58
【问题描述】:
我正在尝试使用 PHP to MySQL 导入产品 csv。当我尝试导入时,我得到了一些奇怪的字符,这些字符也没有正确添加到 database table。
Product Name on CSV File
Alva Cook'on Braadpan Lavendelblauw ovaal 24 cm – 4,2 升
导入函数执行时得到的产品名称
Alva Cook'on Braadpan Lavendelblauw ovaal 24 厘米 - 4.2 升
我的代码是这样的
while (($emapData = fgetcsv($filepath, 10000, ",")) !== FALSE)
{
$pd_name= ($emapData[1]);
}
我使用此功能作为解决方案,在导入页面上正确显示产品名称
$pd_name=mb_convert_encoding(($emapData[1]), 'UCS-2LE', 'UTF-8');
Output ~ Alva Cook'on Braadpan Lavendelblauw ovaal 24 cm – 4,2 Liter
但是当我使用mysql_real_escape_string 如下将名称插入数据库表时,它添加了很多slashes 并且无法正常工作。
$pd_name=mysql_real_escape_string(mb_convert_encoding(($emapData[1]), 'UCS-2LE', 'UTF-8'));
Output ~ A\0l\0v\0a\0 \0C\0o\0o\0k\0\'\0o\0n\0 \0B\0r\0a\0a\0d\0p\0a\0n\0 \0L\0a\0v\0e\0n\0d\0e\0l\0b\0l\0a\0u\0w\0 \0o\0v\0a\0a\0l\0 \02\04\0 \0c\0m\0 \0 \04\0,\02\0 \0L\0i\0t\0e\0r\0
SQL database table 支持UTF,当我们正常使用表单添加产品时,我们不会遇到这个问题,任何人都知道如何解决这个问题。谢谢你
【问题讨论】:
-
使用 utf8_encode();希望它会工作
-
您需要在整个渲染链中使用相同的字符集。 PHP 本身与字符串的字符集无关。字符串是一个字符串,包含一堆字节。这些字节代表的内容与 PHP 本身无关。当您开始处理该字符串时,实际的表示很重要。如果您在执行过程中转换为 utf-8,但没有告诉输出/显示环境期待 UTF,那么您将得到“损坏”的字符。
-
@KamleshGupta 它不起作用,伙计
-
@abra 我不知道为什么这是重复的,因为我可以在网站上正确显示输出但我无法使用我的 sql 保存它,这个问题没有正确的答案
-
@MarcB 你知道 mysql_real_escape_string(mb_convert_encoding(($emapData[1]), 'UCS-2LE', 'UTF-8'));拜托,因为没有 mysql_real_escape_string 它工作得很好,但我需要添加 mysql_real_escape_string 来转义'字符
标签: php mysql fgetcsv csv-import