我有一个带有站名列表的CSV文件。一些名字包含正确的单引号:'(不是普通的单引号)。PHP/MySQL - 不允许我插入(或替换)右侧单引号“'”
我想从文件中读取数据并插入到数据库中。所有的工作站都可以正常工作,但引用的话会以0
的格式插入到数据库中。
我试图将其替换为普通的引号,但PHP似乎没有在字符串中找到引号。
if(strpos($stationName, "’") !== false){
var_dump($stationName);
var_dump(str_replace("’", "'", $stationName));
die();
}
上面的代码永远不会被触发。我需要使用PHP或MySQL中的编码做些什么,我应该如何解决这个问题?字符串的
示例工作正常: Langton Matravers, Crack Lane Bottom (N-bound)
而且例子被插入为0
: Harman’s Cross, Wilkswood Farm Road (NW-bound)
我使用Laravel如果有什么差别。
谢谢。
编辑:
我已经运行检测解码,这表明我的字符串是ASCII
编码 - 我认为这可能是问题,但我似乎无法改变编码?
我运行下面几行:
$stationName = mb_convert_encoding($stationName, "UTF-8", "ASCII");
var_dump(mb_detect_encoding($stationName));
,仍然可以得到的输出字符串在ASCII
?
EDIT2:
事实证明,这是问题的实际CSV文件编码和我所用的CSV库(Laravel-Excel)中正在读的方式。调整配置并转换CSV文件编码似乎解决了这个问题。
你正在使用哪种编码? – Jeff
据我所知(在PHP文件和数据库中),“UTF-8” – Giedrius
该字符串根据mb_detect_encoding函数显示为'ASCII' - 但我似乎无法改变它? – Giedrius