Description:
I would like you to add an OVERALL charset option.
The "default-character-set" option under the [mysqld] section, in the "my.cnf" file does NOT change:
- character_set_connection
- character_set_client
- character_set_results
I tried adding "default-character-set" to the [mysql] section and it "modified" this values, but it only apears so, beacause it keeps using latin1 as character_set_connection, character_set_client and character_set_results.
How to repeat:
Start mysql in a fedora core 4 OS with the following my.cnf config
##############################################################################################################
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
default-character-set=utf8
[mysql.server]
user=mysql
basedir=/var/lib
[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql]
default-character-set=utf8
##############################################################################################################
Now, try any query using php with utf-8 charset
##############################################################################################################
Example:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>PHP UTF-8 Query Example</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<body>
<?php
// Connect to db (add your own user and password)
$link = mysqli_connect('localhost','user','password','test');
// Create tables
// $query0 = "SET NAMES utf8;"; // We are NOT SUPOSED to use this
$query1 = "CREATE TABLE `Asistente de Direccion` ( `ID` smallint(5) unsigned NOT NULL ) TYPE = MYISAM CHARACTER SET utf8;";
$query2 = "CREATE TABLE `Asistente de Dirección` ( `ID` smallint(5) unsigned NOT NULL ) TYPE = MYISAM CHARACTER SET utf8;";
$query3 = "INSERT INTO `Asistente de Direccion` VALUES('1');";
$query4 = "INSERT INTO `Asistente de Dirección` VALUES('1');";
$query5 = "SELECT * FROM `Asistente de Direccion`;";
$query6 = "SELECT * FROM `Asistente de Dirección`;";
// $result0 = mysqli_query($link,$query0) or die("Error in \$query0 <br>\n" . mysqli_error($link) . "<br> \n");
$result1 = mysqli_query($link,$query1) or die("Error in \$query1 <br>\n" . mysqli_error($link) . "<br> \n");
$result2 = mysqli_query($link,$query2) or die("Error in \$query2 <br>\n" . mysqli_error($link) . "<br> \n");
// Insert some info
$result3 = mysqli_query($link,$query3) or die("Error in \$query3 <br>\n" . mysqli_error($link) . "<br> \n");
$result4 = mysqli_query($link,$query4) or die("Error in \$query4 <br>\n" . mysqli_error($link) . "<br> \n");
// Get table's info
$result5 = mysqli_query($link,$query5) or die("Error in \$query5 <br>\n" . mysqli_error($link) . "<br> \n");
$result6 = mysqli_query($link,$query6) or die("Error in \$query6 <br>\n" . mysqli_error($link) . "<br> \n");
// Print info
while ( $data = mysqli_fetch_assoc($result5) ) {
print "<pre>";
print_r($data);
print "</pre>";
}
while ( $data1 = mysqli_fetch_assoc($result6) ) {
print "<pre>";
print_r($data1);
print "</pre>";
}
mysqli_close($link);
?>
</body>
</html>
##############################################################################################################
Make shure that if you copy and paste the text, u use UTF-8 characters & encoding...
Suggested fix:
make the "set-default-charset" really work for ALL the charset variables.