Joã*_*uís 5 encoding query mysql php
我在使 mydatabase 表显示拉丁字符时遇到问题。(\xc3\xa3、\xc3\xb5、\xc3\xa1、\xc3\xa9、\xc3\xad、\xe2\x80\xa6)。我正在使用带有 Apache 2.4.9 和 MySQL 5.6.17 的 WAMP 服务器。
\n\n我有一个用 HTML 创建的简单表单,并且有一个 PHP 代码,运行查询并创建帐户。这是 PHP 代码:
\n\ninclude(\'config.php\'); //My database data for connection\n\nif(isset($_POST[\'submit\'])) {\n $username = $_POST[\'username\'];\n $password = $_POST[\'password\'];\n $email = $_POST[\'email\'];\n\n $query = "INSERT INTO account SET username = \'".$username."\', password = PASSWORD(\'".$password."\'), email = \'".$email."\'";\n $execute_query = mysqli_query($connection, $query);\n if($execute_query) { \n //Creates the account\n }\n else { \n //If an error occures\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n例如,现在我创建一个帐户:
\n\nUsername: Lu\xc3\xads\nPassword: 1234\nE-mail: somemail@mail.com\nRun Code Online (Sandbox Code Playgroud)\n\n当我检查表时,它显示创建的帐户,但用户名显示Lu\xc3\x83s而不是Lu\xc3\xads。
\n\n我尝试过的事情:
\n\nCreating a DataBase and Table with:\nutf8_general_ci\nutf8_unicode_ci\nutf8mb4_general_ci\nutf8mb4_unicode_ci\nlatin1_swedish_ci\nRun Code Online (Sandbox Code Playgroud)\n\n它们都不起作用,它总是显示\xc3\x83而不是\xc3\xad。
\n\n\n\n我在使 mydatabase 表显示拉丁字符时遇到问题。\n (\xc3\xa3,\xc3\xb5,\xc3\xa1,\xc3\xa9,\xc3\xad,\xe2\x80\xa6)
\n
这具有 HTML 表单数据、PHP 文件和 MySQL 之间编码不匹配的所有迹象。我的猜测是问题是您的 HTML 表单和 PHP 文件正在发送 UTF8 数据\xe2\x80\x94,因为 UTF8 是当今默认的编码方法\xe2\x80\x94 到设置(默认情况下)使用编码的 MySQL 数据库latin1_swedish_ci。
因此,这是 \xe2\x80\x9csix 中的一个,是另外六个 \xe2\x80\x9d 问题之一,理论上您可以将 HTML 和 PHP 文件中的编码更改为latin1_swedish_ci. 但这在当今的互联网世界和网络开发世界中是相当倒退的。
因此,我建议确保从HTML 表单到 PHP 到 MySQL 数据库的整个数据链\xe2\x80\x94 都是 UTF8。一旦你获得了 UTF8 格式的所有内容,生活就会变得更加轻松,原因有很多。
\n\n至于为什么您会看到这个问题,是因为(默认情况下)大多数 MySQL 安装集latin1_swedish_ci而不是utf8_general_ci新创建的数据库。所以你\xe2\x80\x99在尝试解决这个问题时走在正确的轨道上。
但是,要获得 MySQL 数据库 \xe2\x80\x94 和配位服务器 \xe2\x80\x94 设置以正确处理字符编码和 \xe2\x80\x94(在本例中)\xe2\x80\x94UTF8,你需要做的不止一件事编码。
\n\n首先,更改数据库的排序规则并重试。
\n\nALTER DATABASE [name of your database] CHARACTER SET utf8;\nRun Code Online (Sandbox Code Playgroud)\n\n如果这是一个特定的表,则可以按如下方式更改排序规则:
\n\nALTER TABLE [name of your table] CONVERT TO CHARACTER SET utf8;\nRun Code Online (Sandbox Code Playgroud)\n\n如果它是表中的特定列:
\n\nALTER TABLE [name of your table] MODIFY [name of your column] [other settings] CHARACTER SET utf8 COLLATE utf8_general_ci;\nRun Code Online (Sandbox Code Playgroud)\n\n或者,您可以导出当前数据库,使用此命令创建一个新数据库并重新导入数据:
\n\nCREATE DATABASE [name of your database] CHARACTER SET utf8 COLLATE utf8_general_ci;\nRun Code Online (Sandbox Code Playgroud)\n\n如果您想对机器上的 MySQL 安装进行永久性更改,从而出现问题,请去编辑my.cnf. 以下代码将整个链设置为 UTF-8:
[client]\ndefault-character-set=utf8\n\n[mysql]\ndefault-character-set=utf8\n\n[mysqld]\ncollation-server = utf8_unicode_ci\ninit-connect='SET NAMES utf8'\ncharacter-set-server = utf8\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
16418 次 |
| 最近记录: |