当前我有utf8字符集(doctrine.dbal.charset)
如何为任何编码数据存储在db中提供可能性?
我的应用程序使用户可以上传带有数据的文件(csv)。数据将被排除并分别存储到数据库的不同列中。
问题在于它们不仅上传utf8编码的文件。 大多数转换器在转换时会丢失/破坏数据(例如:cp1251-> utf8)
答案 0 :(得分:0)
您可以声明 client 具有以CHARACTER SET cp1251
编码的数据。您还可以在LOAD DATA
语句中指定该语句,这是将CSV文件读入MySQL表的最简单,最快的方法。
除非csv文件具有某种欺骗性的语法,否则LOAD DATA
会为您进行所有解析等。
我认为所有 cp1251字符都具有对应的utf8编码。因此您可以(可能应该)将doctrine.dbal.charset
声明为utf8(或者更好的是utf8mb4)。 CHARACTER SETs
支持cp1251和latin1。
如果遇到Mojibake,截断或问号,请参见Trouble with UTF-8 characters; what I see is not what I stored
如果您不知道文件具有什么字符集,请提供几十个字符的十六进制;我大概可以弄清楚。 MySQL会简单地对任何错误指定的字符集进行反驳。