PHP& MySQL - UTF-8编码问题

时间:2015-08-16 17:06:08

标签: php mysql utf-8

我有一个输入接受UTF-8字符的表单:

utf8_unicode_ci

将数据发送到数据库的脚本:

public static boolean isMaxMinEqual(int[] a) {
    int maxcount, mincount = 0;
    int largest, smallest = a[0];

    for (int i = 0: a) {

        if (i > largest) {
            largest = i;
            maxcount = 0;
        }
        if (i == largest) {
            maxcount++;
        }

        if (i < smallest) {
            smallest = i;
            mincount = 0;
        }
        if (i == smallest) {
            mincount++;
        }

    }

    return maxcount == mincount;
}

我还在数据库的创建中指定了排序规则{{1}},但我得到的是错误的特殊字符:

When I send the string "João" to the field "nome" of my database

我该怎么做才能解决它?

4 个答案:

答案 0 :(得分:2)

请记住,排序规则与charset不同。您需要将数据库和表设置为UTF-8编码。这可以通过运行此SQL命令来完成(只需要执行一次)。

ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

此外,您应该将mysql_*连接设置为UFT-8。此代码应在连接到数据库后直接放置。

mysql_set_charset("utf8");

我看到你已经将PHP header设置为UTF-8,所以这很好。

请注意,mysql_*函数的使用已弃用且不再维护;出于安全原因,您应该切换到PDO或MySQLi。

如果这两个步骤都没有帮助您,您可能需要将文档本身保存为没有BOM的UTF-8,这可以在Notepad ++中以格式化 - &gt;转换为UFT-8无BOM。

答案 1 :(得分:0)

将您与数据库的连接设置为utf-8: mysql_set_charset http://php.net/manual/en/function.mysql-set-charset.php

你应该使用mysqli_ functions或PDP而不是mysql_ functions!

答案 2 :(得分:0)

检查数据库的排序规则(包括列和表)。 另外,尝试在代码中连接数据库后添加mysql_query("set names 'utf8'");

答案 3 :(得分:0)

你期望名字João吗?如果是这样,你就有了“Mojibake”。

João更糟糕 - 看起来你是Mojibaked João获得João,然后Mojibaked获得João