Nis*_*sto 4 mysql sql windows cmd character-encoding
因此,我在尝试从编码数据库、表和列中恢复过来时遇到了一些问题Latin1,现在所有内容最终都采用 UTF-8 格式,我似乎无法更新列中的行。我正在尝试将“e”替换为带锐角的 e (\xc3\xa9)。但它给了我这个:
\n\n\n错误 1366 (HY000):字符串值不正确:第 1 行的列\n \'Name\' 的 \'\\x82m ...\'
\n
运行此命令时:
\n\nUPDATE access SET Name=\'\xc3\xa9m\' WHERE id="2";
所有数据库在运行状态命令时都会给我这个(当然除了部分current database):
Connection id: 1 \nCurrent database: access \nCurrent user: root@localhost \nSSL: Not in use \nUsing delimiter: ; \nServer version: 5.1.47-community MySQL Community Server (GPL) \nProtocol version: 10 \nConnection: localhost via TCP/IP \nServer characterset: utf8 \nDb characterset: utf8 \nClient characterset: utf8 \nConn. characterset: utf8 \nTCP port: 3306 \nUptime: 20 min 16 sec \n\nThreads: 1 Questions: 110 Slow queries: 0 Opens: 18 Flush tables: 1 Open tables: 11 Queries per second avg: 0.90\nRun Code Online (Sandbox Code Playgroud)\n\n在 cmd 中运行 chcp 命令给了我850. 哦,在某些时候我得到了这个:
\n\n\n错误 1300 (HY000): 无效的 utf8 字符串: \'\xc3\xa9m\' WHERE id="2"
\n
我到处寻找解决方案,但似乎在任何地方都找不到任何东西,而且由于我在 Stackoverflow 上总是得到很好的回应,所以我想我应该在这里问。
\n\n谢谢你的帮助!
\n解决方案是将连接变量设置为您安装的 Windows 使用的任何代码页(不是像很多页面推荐的那样的 latin1 - cmd.exe 的字符编码不是 latin1)。
\n\n在我的例子中,代码页是 850:
\n\nmysql> SET NAMES cp850;
以下是连接设置为 UTF-8 的示例:
\n\nmysql> show variables like '%char%';\n+--------------------------+---------------------------------+\n| Variable_name | Value |\n+--------------------------+---------------------------------+\n| character_set_client | utf8 |\n| character_set_connection | utf8 |\n| character_set_database | utf8 |\n| character_set_filesystem | binary |\n| character_set_results | utf8 |\n| character_set_server | utf8 |\n| character_set_system | utf8 |\n| character_sets_dir | C:\\xampp\\mysql\\share\\charsets\\ |\n+--------------------------+---------------------------------+\n8 rows in set (0.00 sec)\nRun Code Online (Sandbox Code Playgroud)\n\n这是重音字符发生的情况:
\n\nmysql> select nom from assignatura where nom like '%prob%';\n+---------------------------------------+\n| nom |\n+---------------------------------------+\n| Probabilitat i Processos Estoc\xe2\x94\x9c\xc3\xa1stics |\n| Probabilitat i Processos Estoc\xe2\x94\x9c\xc3\xa1stics |\n+---------------------------------------+\n2 rows in set (0.03 sec)\nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x94\x9c请注意之前的无关字符\xc3\xa1。还有重音方向不对,应该是\xc3\xa0。
执行后SET NAMES cp850;:
mysql> show variables like '%char%';\n+--------------------------+--------------------------------+\n| Variable_name | Value |\n+--------------------------+--------------------------------+\n| character_set_client | cp850 |\n| character_set_connection | cp850 |\n| character_set_database | utf8 |\n| character_set_filesystem | binary |\n| character_set_results | cp850 |\n| character_set_server | utf8 |\n| character_set_system | utf8 |\n| character_sets_dir | C:\\xampp\\mysql\\share\\charsets\\ |\n+--------------------------+--------------------------------+\n8 rows in set (0.00 sec)\nRun Code Online (Sandbox Code Playgroud)\n\n我们终于得到了正确的重音字符:
\n\nmysql> select nom from assignatura where nom like '%prob%';\n+--------------------------------------+\n| nom |\n+--------------------------------------+\n| Probabilitat i Processos Estoc\xc3\xa0stics |\n| Probabilitat i Processos Estoc\xc3\xa0stics |\n+--------------------------------------+\n2 rows in set (0.00 sec)\nRun Code Online (Sandbox Code Playgroud)\n