1--TEST-- 2mysql_client_encoding() 3--SKIPIF-- 4<?php 5require_once('skipif.inc'); 6require_once('skipifconnectfailure.inc'); 7?> 8--FILE-- 9<?php 10include_once "connect.inc"; 11 12$tmp = NULL; 13$link = NULL; 14 15if (!$link = my_mysql_connect($host, $user, $passwd, $db, $port, $socket)) 16 printf("[002] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n", 17 $host, $user, $db, $port, $socket); 18 19$default_link_enc = mysql_client_encoding(); 20$link_enc = mysql_client_encoding($link); 21 22if ($default_link_enc !== $link_enc) 23 printf("[003] %s != %s, [%d] %s\n", $default_link_enc, $link_enc, mysql_errno($link), mysql_error($link)); 24 25if (!$res = mysql_query('SELECT version() AS server_version', $link)) 26 printf("[004] [%d] %s\n", mysql_errno($link), mysql_error($link)); 27$tmp = mysql_fetch_assoc($res); 28mysql_free_result($res); 29$version = explode('.', $tmp['server_version']); 30if (empty($version)) 31 printf("[005] Cannot determine server version, need MySQL Server 4.1+ for the test!\n"); 32 33if ($version[0] <= 4 && $version[1] < 1) 34 printf("[006] Need MySQL Server 4.1+ for the test!\n"); 35 36if (!$res = mysql_query('SELECT @@character_set_connection AS charset, @@collation_connection AS collation', $link)) 37 printf("[007] [%d] %s\n", mysql_errno($link), mysql_error($link)); 38$tmp = mysql_fetch_assoc($res); 39mysql_free_result($res); 40if (!$tmp['charset']) 41 printf("[008] Cannot determine current character set and collation\n"); 42 43if ($link_enc !== $tmp['charset']) { 44 if ($link_enc === $tmp['collation']) { 45 printf("[009] Known bug, collation instead of chatset returned, http://bugs.mysql.com/bug.php?id=7923\n"); 46 } else { 47 printf("[009] Check manually, watch out for unicode and others\n"); 48 var_dump($link_enc); 49 var_dump($tmp); 50 } 51} 52 53if ((version_compare(PHP_VERSION, '5.9.9', '>') == 1) && function_exists('is_unicode')) { 54// unicode mode 55 if (!is_unicode($default_link_enc) || !is_unicode($link_enc)) { 56 printf("[010] No unicode returned!\n"); 57 var_dump($default_link_enc); 58 var_dump($link_enc); 59 } 60} 61 62mysql_close($link); 63 64if (false !== ($tmp = @mysql_client_encoding($link))) 65 printf("[012] Expecting boolean/false, got %s/%s\n", gettype($tmp), $tmp); 66 67print "done!"; 68?> 69--EXPECTF-- 70done! 71