我有和我转换为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之前的空格是转换为问号的字符。
答案 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;