PHP 替换奇怪的 space
PHP replace weird space
我有 Excel 文件,我已将其转换为 CSV 文件。显然这个文件中有两种 spaces
,常规的 space 和非中断的 space (我的假设).
将数据保存到数据库时,不间断 space 被保存为带有问号 (�) 的黑色菱形。
我一直在阅读,因为这可能已经有了解决方案,但是当我尝试它们时,什么也没有发生。
使用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前面的space是转化为问号的字符
如果您查看 Excel 程序的设置,看看是否可以建立原始文件的字符集,然后您可以上传文件并使用 PHP MB_convert_encoding
函数将 Excel 保存为 UTF-8
的任何内容进行转换,或者更好的是直接从 Excel.
将其导出为 UTF-8
另请注意,如果您使用 MySQL,则 UTF8_
字符集为 BROKEN,应改用 UTF8mb4
。
我能够通过 iconv
解决问题:
$name = !empty($data[0]) ? iconv("UTF-8", "ISO-8859-1//IGNORE", $data[0]) : null;
我有 Excel 文件,我已将其转换为 CSV 文件。显然这个文件中有两种 spaces
,常规的 space 和非中断的 space (我的假设).
将数据保存到数据库时,不间断 space 被保存为带有问号 (�) 的黑色菱形。
我一直在阅读,因为这可能已经有了解决方案,但是当我尝试它们时,什么也没有发生。
使用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前面的space是转化为问号的字符
如果您查看 Excel 程序的设置,看看是否可以建立原始文件的字符集,然后您可以上传文件并使用 PHP MB_convert_encoding
函数将 Excel 保存为 UTF-8
的任何内容进行转换,或者更好的是直接从 Excel.
另请注意,如果您使用 MySQL,则 UTF8_
字符集为 BROKEN,应改用 UTF8mb4
。
我能够通过 iconv
解决问题:
$name = !empty($data[0]) ? iconv("UTF-8", "ISO-8859-1//IGNORE", $data[0]) : null;