我有一个在Laravel上运行的项目。
我的函数获取存储中的文件(UTF8文件),然后将数据解析/插入到mysql表中(Mysql在utf8mb4_unicode_ci中)。
由于某些错误,我在插入时卡住了:常规错误:1366不正确的字符串值:'\ xC2'
有关插入文本失败:“ Laclairièred'Eole n°5”
问题似乎在于“°”字符。当我删除它时,插入工作。口音没有问题,只是°,我不知道为什么。
我尝试了一些preg_replace,iconv,但没有成功。
答案 0 :(得分:0)
根据您用于读取CSV的软件,您可能需要调整CSV文档输出脚本。
在Windows上,MS Excel要求使用UTF-8编码的CSV及其相应的BOM字符。要满足此要求,您只需要添加UTF-8 BOM字符即可。
在MacOS系统上,MS Excel要求以制表符作为分隔符的UTF-16 LE编码的CSV。
您可以使用此库来解析csv文件。他们已经将这些内容包含在库中。 https://csv.thephpleague.com/9.0/interoperability/encoding/
答案 1 :(得分:0)
听起来好像设置了ascii,而不是utf8,甚至不是latin1。
°
在ascii中不可用,因此可能是导致错误的原因。在latin1中,它是十六进制B0
。在utf8中,它是C2B0
。由于错误消息仅提及C2
,因此我猜测目标字符集是ascii,而不是latin1。
请提供SHOW CREATE TABLE
以及用于读取文件的技术-比“读取纯文本文件”更多。