2013-02-20 74 views
3

我正在将excel中的数据导入到数据表中。它工作正常。但在某些领域,导入的数据具有未知字符' '。但是excel没有这样的性格。这是我的代码。从excel中导入数据时删除特殊字符

我尝试过很多方法。这是我的最终代码。

$new_prod_desc = (ucfirst($data[0])." ".ucfirst($data[5])." ".ucfirst($data[1])." ".ucfirst($data[2])); $new_prod_desc = preg_replace("/&#?[a-z0-9]+;/i","",$new_prod_desc);

感谢。

+0

为了得到适当的修复,你必须找出在Excel和数据库表中使用了哪些编码。 – 2013-02-20 15:38:55

回答

0

首先验证excel文档是否使用UTF-8编码。

尝试添加功能

utf8_decode

这样的:

$new_prod_desc = utf8_decode($new_prod_desc); 
+1

该函数生成“ISO-8859-1”。除非数据库使用“ISO-8859-1”,否则将毁坏数据。 – 2013-02-20 15:37:57

1

这不是一个单字节字符,但UTF-8序列ef bf bd

来自here

U+FFFD � ef bf bd REPLACEMENT CHARACTER 

也许它正在取代更糟糕的性格?

如果你只是希望它消失,你可以搜索并替换字节序列。

+0

何时替换这些字符?在utf8_decode之前或之后utf8_decode?还有哪一个我​​想要替换? 'ef bf bd'或'U + FFFD'? – Devpower 2013-02-20 15:37:52

+0

@Devpower:我根本不会使用'utf8_decode()',特别是如果你不是现在,并且你得到的只是这些麻烦的字符。 – wallyk 2013-02-20 15:51:55

+0

我明白了。请告诉我哪一个我想要更换? 'ef bf bd'或'U + FFFD'? – Devpower 2013-02-20 16:03:01