如何更改数据库连接的默认字符集?

时间:2014-06-11 23:02:35

标签: php mysql utf-8 character-encoding

我无法正确输入(通过php)土耳其字符到PhpMyadmin。我将所有内容(浏览器编码,html字符集,数据库排序连接)设置为UTF-8 ..

和我的查询

<?php
  ob_start();
  session_start();

  mysql_connect('localhost', 'root', 'pass');
  mysql_select_db('myDatabase');
  mysql_query("SET NAMES 'utf8' COLLATE 'utf8_turkish_ci'");
?> 

P.S:当我更改数据库上的文本并正确写入时,我可以在浏览器上正常显示它们

所以问题是通过php正确地将文本输入数据库..

我用msqli找出问题所在:

<?php
  ob_start();
  session_start();
  $link = mysqli_connect('localhost', 'root', 'pass');
  mysql_select_db('myDatabase');
  mysql_query("SET NAMES 'utf8' COLLATE 'utf8_turkish_ci'");

  /* check connection */
      if (!$link) {
      printf("Connect failed: %s\n", mysqli_connect_error());
      exit();
  }

 /* Print current character set */
      $charset = mysqli_character_set_name($link);
      printf ("Current character set is %s\n",$charset);

 /* close connection */
      mysqli_close($link);

 ?> 

输出(数据库连接的默认字符集)是&#34;当前字符集是latin1&#34;

1-我无法找到默认&#39; latin1&#39;在php.ini或其他地方..它来自哪里?

2-如何将其更改为utf8_turkish_ci?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

mysqlmysqli库创建单独的mysql会话,以验证mysql会话中的字符集设置,您可以执行以下操作:

mysql_select_db('myDatabase');
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_turkish_ci'");
$rs = mysql_query("show variables like 'char%'");
$row = mysql_fetch_assoc($rs);
print_r($row);