我有一个项目是在拉威尔上运行的。我的函数获取存储中的文件(utf8文件),然后将数据解析/插入mysql表(mysql的格式是utf8mb4\uunicode\uci)。由于insert上的某些文件出现此错误,我感到很困惑:常规错误:1366不正确的字符串值:'\xc2'相关插入文本失败:“la Clariè雷德奥伦°5"问题似乎是°" 角色。当我删除它,插入工作。口音没问题,只是° 我不知道为什么。我尝试了一些preg\u替换,但没有成功。
vfhzx4xs1#
根据您用来读取csv的软件,您可能需要调整csv文档输出脚本。在windows上,msexcel需要utf-8编码的csv及其相应的bom字符。为了满足这个需求,您只需要添加utf-8bom字符。在macos系统上,ms excel要求使用制表符作为分隔符的utf-16 le编码的csv。您可以使用此库来解析csv文件。他们已经把这些东西放进图书馆了。https://csv.thephpleague.com/9.0/interoperability/encoding/
nbnkbykc2#
听起来好像有些东西设置为ascii,而不是utf8,甚至不是拉丁文1。 ° 在ascii中不可用,因此可能是错误的原因。在拉丁文1中,它是十六进制 B0 . 在utf8中,它是 C2B0 . 因为错误信息只提到 C2 我猜目标字符集是ascii,而不是拉丁1。请提供 SHOW CREATE TABLE 以及您用来读取文件的技术——不仅仅是“读取平面文本文件”。
°
B0
C2B0
C2
SHOW CREATE TABLE
2条答案
按热度按时间vfhzx4xs1#
根据您用来读取csv的软件,您可能需要调整csv文档输出脚本。
在windows上,msexcel需要utf-8编码的csv及其相应的bom字符。为了满足这个需求,您只需要添加utf-8bom字符。
在macos系统上,ms excel要求使用制表符作为分隔符的utf-16 le编码的csv。
您可以使用此库来解析csv文件。他们已经把这些东西放进图书馆了。https://csv.thephpleague.com/9.0/interoperability/encoding/
nbnkbykc2#
听起来好像有些东西设置为ascii,而不是utf8,甚至不是拉丁文1。
°
在ascii中不可用,因此可能是错误的原因。在拉丁文1中,它是十六进制B0
. 在utf8中,它是C2B0
. 因为错误信息只提到C2
我猜目标字符集是ascii,而不是拉丁1。请提供
SHOW CREATE TABLE
以及您用来读取文件的技术——不仅仅是“读取平面文本文件”。