【问题标题】:Special Characters Causing MySQL Failures导致 MySQL 失败的特殊字符
【发布时间】:2013-07-04 04:13:29
【问题描述】:

对于我当前的项目,我想为我在 MySQL 中的字典数据库制作一个浏览器。这些单词包含特殊字符,我使用的是 UTF-8 编码。到目前为止,我已经完成了一个功能性的“搜索”,可以查找用户的输入并输出相关信息。

这是我遇到问题的地方。如果用户输入所有正常字符,则代码正常工作。但是,如果他们输入带有任何特殊字符的内容,则查询总是返回 null。

以下是相关代码:

HTML 页面:

<html>
    <body>
        <form action="test.php" method="get">
            Search dictionary: <input type="text" name="search">
            <input type="submit" value="Submit">
        </form>
    <br>
    </body>
</html>

PHP 脚本(摘录):

<?php
    $q=$_GET['search'];
    $id = "";
    if (strlen($q) > 0) {
        // connects to DB
        $db = new PDO('mysql:host=localhost;dbname=***', '***', '***');
        $db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");

        $query="SELECT DISTINCT e.lexeme_id, l.posc
        FROM entry e
        INNER JOIN lexeme l 
        USING (lexeme_id)
        WHERE e.lemma = '".$q."'";

        $stmt=$db->prepare($query);
        $stmt->execute();

        foreach ($stmt as $row) {
            $id = $row['lexeme_id'];
            $posc = $row['posc'];
            //output results here
            echo "<h1>".$q."</h1><br/>";
            echo "<h2>".$posc."</h2><br/>";
        }
    }
?>

如果我在搜索框中输入“man”,就会找到相应的数据。但是,如果我搜索“maðr”,我没有得到任何结果。但是,如果我在 MySQL Workbench 中尝试相同的查询,我会得到正确的输出。我已经让脚本打印出它使用的查询,并且它与它应该是匹配的。

TL;DR:以下查询在 MySQL Workbench 中运行文件,但当我通过 PHP 脚本在我的 HTML 页面上调用它时不运行-

SELECT DISTINCT e.lemma
FROM entry e
INNER JOIN lexeme l 
USING (lexeme_id)
WHERE e.lexeme_id = "maðr"

知道可能出了什么问题吗?谢谢!

【问题讨论】:

  • 确保您的所有脚本(您的 php 脚本、您的 html 文件和其他所有内容)都使用 utf8 编码。
  • 到目前为止,我只是在运行我在此处发布的内容。我是否正确设置了编码?
  • 你必须在你的文件中检查这个。许多代码编辑器(例如 notepad++)都有“转换为 utf8”或类似选项。

标签: php html mysql character-encoding


【解决方案1】:
header('Content-type: text/plain; charset=utf-8');

在您的 PHP 脚本中将其设为 UTF8

【讨论】:

  • 我试过这个,但无济于事。我想我在每一个可能的时刻都添加了 UTF8 编码,但它仍然行为不端。
  • 我不知道为什么,但它现在似乎工作正常。 o.O
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
相关资源
最近更新 更多