这是怎么é
字符编码? (例如UTF-8)
设置通过经由mysql_set_charset()相应的MySQL连接使用的字符集。这也会影响用于比较字符的排序规则。每个字符集都有默认的排序规则,即比较/排序字符的默认方式。对于大多数字符集,可以使用多种排序规则,例如,忽略大写/小写。
要获得与MySQL相关的字符集(和归类)的把握,我建议在这种情况下阅读
---编辑:例如---
让我们就拿这个脚本(文件)
<?php
$startsWith = 'bé';
$mysql = mysql_connect('localhost', 'localonly', 'localonly') or die(mysql_error());
mysql_select_db('test', $mysql) or die(mysql_error());
echo 'version: ', PHP_VERSION, "\n";
echo 'os: ', PHP_OS, "\n";
echo 'mysql_client_encoding: ', mysql_client_encoding($mysql), "\n";
for($i=0; $i<strlen($startsWith); $i++) {
printf('%02X ', ord($startsWith[$i]));
}
我的编辑保存默认文件UTF-8编码显然(之前不知道)我的PHP版本带有一个使用utf-8作为默认连接字符集的mysql连接器。
因此输出是
version: 5.4.1
os: WINNT
mysql_client_encoding: utf8
62 C3 A9
你看如何到字符被编码为三个字节0X62 0xC3 0xA9;最后的字节是é的utf-8表示。因此,我们有客户编码= UTF-8和输入字符串为UTF-8,以及 - > OK
现在,如果我从UTF-8更改为ISO-8859-1的脚本文件的编码结果是
version: 5.4.1
os: WINNT
mysql_client_encoding: utf8
62 E9
现在é仅由一个字节编码;这是该角色的ISO-8859-1表示。如果这个字节序列被发送到mysql服务器(它希望从客户端获得一个utf-8序列),服务器就不知道该怎么做 - 因为它是一个无效的utf-8序列。更糟糕的是,偶然的情况下,iso-8859序列形成一个同样有效的utf-8序列,服务器会做一些完全错误的事情,因为它会将序列解释为与假设不同的东西。
你能分享错误代码吗? mysql_error()返回什么? – 2012-08-08 11:11:36
使用'执行查询 – 2012-08-08 11:11:48