PHP取代奇怪的空间

时间:2016-04-22 18:14:44

标签: php utf-8 whitespace

我有和我转换为CSV文件的Excel文件。显然,此文件中有两种spaces,常规空间和不间断空格(我的假设)

将数据保存到数据库时,不间断空格会被保存为带有问号( )的黑色菱形。

我一直在阅读,因为这可能已经有了解决方案,但是当我尝试它们时,一切都没有发生。

使用mb_substr方法:

$name = !empty($data[0]) ? mb_substr($data[0], 0, mb_strlen($data[0]), "UTF-8") : null;

使用str_replace方法:

$name = !empty($data[0]) ? str_replace(" ", " ", $data[0]) : null;

我已经用这个把头发拉了几个小时了,所以如果有人能帮助我,我非常感激。

修改

我正在使用Oracle作为数据库,这里是定义的字符集:

NLS_CHARACTERSET       = AL32UTF8
NLS_NCHAR_CHARACTERSET = AL16UTF16

以下是一个示例数据:

,W.R。,

W之前的空格是转换为问号的字符。

2 个答案:

答案 0 :(得分:0)

如果您查看Excel程序的设置并查看是否可以建立原始文件的字符集,则可以上传文件并使用PHP MB_convert_encoding函数从Excel保存的任何内容进行翻译。 UTF-8,或者更好,只需将其直接从Excel导出为UTF-8。

另请注意,如果您使用MySQL,UTF8_字符集为BROKEN,则应使用UTF8mb4

答案 1 :(得分:0)

我能够使用iconv解决问题:

$name = !empty($data[0]) ? iconv("UTF-8", "ISO-8859-1//IGNORE", $data[0]) : null;