Я не могу воспроизвести ошибку с
<code><?php
ini_set('default_mimetype', 'text/html');
ini_set('default_charset', 'utf-8');
echo 'phpversion: ', phpversion(), "<br />\n";
$mysqli = connect();
echo 'mysqli server version: ', mysqli_get_server_version($mysqli), "<br />\n";
echo 'mysqli client version: ', mysqli_get_client_version($mysqli), "<br />\n";
echo 'mysqli proto info: ', mysqli_get_proto_info($mysqli), "<br />\n";
echo '<pre>mysqli charset: '; var_dump(mysqli_get_charset($mysqli)); echo "
\ п ";
установки ($ MySQLi);
$ result = mysqli_query ($ mysqli, 'SELECT x FROM foo') или die (__ LINE __. mysqli_error ($ mysqli));
while ($ row = mysqli_fetch_assoc ($ result)) {
эхо '
', $row['x'], "<pre>\n";
}
function connect() {
$mysqli = mysqli_connect('localhost', 'localonly', 'localonly', 'test') or die(__LINE__.mysqli_connect_error());
mysqli_set_charset($mysqli, 'utf8') or die(__LINE__.mysqli_error($mysqli));
return $mysqli;
}
function setup($mysqli) {
mysqli_query($mysqli, 'CREATE TEMPORARY TABLE foo (id int auto_increment, x varchar(32), primary key(id))') or die(__LINE__.mysqli_error($mysqli));
$v = chr(0xC3). chr(0x91);
mysqli_query($mysqli, "INSERT INTO foo (x) VALUES ('abc'),('$v')") or die(__LINE__.mysqli_error($mysqli));
}
</code>
который печатает на моем компьютере
phpversion: 5.3.5
mysqli server version: 50508
mysqli client version: 50007
mysqli proto info: 10
mysqli charset:
object(stdClass)[2]
public 'charset' => string 'utf8' (length=4)
public 'collation' => string 'utf8_general_ci' (length=15)
public 'dir' => string '' (length=0)
public 'min_length' => int 1
public 'max_length' => int 3
public 'number' => int 33
public 'state' => int 1
public 'comment' => string 'UTF-8 Unicode' (length=13)
abc
Ñ