我有一个输入接受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}},但我得到的是错误的特殊字符:
我该怎么做才能解决它?
答案 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
。