Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将拉丁1编码的文本插入utf8表(忘记使用mysql\u set\u charset)_Php_Mysql_Utf 8_Character Encoding_Latin1 - Fatal编程技术网

Php 将拉丁1编码的文本插入utf8表(忘记使用mysql\u set\u charset)

Php 将拉丁1编码的文本插入utf8表(忘记使用mysql\u set\u charset),php,mysql,utf-8,character-encoding,latin1,Php,Mysql,Utf 8,Character Encoding,Latin1,我有一个PHP web应用程序,其中MySQL表采用utf8文本。我最近将数据从latin1转换为utf8,并相应地转换为表和列。然而,我确实忘记了使用mysql_set_charset,并且我假设最新的传入数据是通过mysql连接作为latin1传入的。我不知道当latin1进入utf8列时会发生什么,但它会导致一些奇怪的项目显示问题,如逗号、引号、符号等 现在mysql_set_charset已经就位,它正在用时髦的字符提取数据。既然我有了使用正确字符集的数据库连接资源,有没有办法将lati

我有一个PHP web应用程序,其中MySQL表采用utf8文本。我最近将数据从latin1转换为utf8,并相应地转换为表和列。然而,我确实忘记了使用mysql_set_charset,并且我假设最新的传入数据是通过mysql连接作为latin1传入的。我不知道当latin1进入utf8列时会发生什么,但它会导致一些奇怪的项目显示问题,如逗号、引号、符号等


现在mysql_set_charset已经就位,它正在用时髦的字符提取数据。既然我有了使用正确字符集的数据库连接资源,有没有办法将latin1-utf8 soup转换为纯utf8?

找到了您的注释中的修复方法。这里有一行SQL语句似乎解决了我的问题

UPDATE table SET col = CONVERT(CONVERT(CONVERT(col USING latin1) USING binary) using utf8);

即使列是UTF8,它也会强制它将数据提取为拉丁字母1,转换为二进制,转换为UTF8,然后重新插入。

懒得四处测试并将其作为我的答案出售。。应该可以帮你(那里也有一些不错的评论)。如果可以在set_charset()丢失期间插入/更新行,您甚至可以在不检查任何内容的情况下转换这些行。使用前复制表,hwo知道