mysql_set_charset
(PHP 5 >= 5.2.3)
mysql_set_charset — クライアントの文字セットを設定する
警告
この拡張モジュールは PHP 5.5.0 で非推奨になり、PHP 7.0.0 で削除されました。 MySQLi あるいは PDO_MySQL を使うべきです。詳細な情報は MySQL: API の選択 を参照ください。 この関数の代替として、これらが使えます。
- mysqli_set_charset()
- PDO: 接続文字列に
charset
を追加してcharset=utf8
などとする
説明
現在の接続における、デフォルトの文字セットを設定します。
パラメータ
charset
-
有効な文字セット名。
link_identifier
MySQL 接続。指定されない場合、mysql_connect() により直近にオープンされたリンクが指定されたと仮定されます。そのようなリンクがない場合、引数を指定せずに mysql_connect() がコールした時と同様にリンクを確立します。リンクが見付からない、または、確立できない場合、
E_WARNING
レベルのエラーが生成されます。
注意
注意:
この関数は、MySQL 5.0.7 以降でないと使用できません。
注意:
文字セットを変更するにはこの方法を使うことを推奨します。 mysql_query() で (
SET NAMES utf8
などとして) 設定する方法はお勧めできません。詳細は MySQL の文字セットの概念 を参照ください。
+add a note
User Contributed Notes 3 notes
Ashus ¶
16 years ago
I needed to access the database from within one particular webhosting service. Pages are UTF-8 encoded and data received by forms should be inserted into database without changing the encoding. The database is also in UTF-8.
Neither SET character set 'utf8' or SET names 'utf8' worked properly here, so this workaround made sure all variables are set to utf-8.
<?php
// ... (creating a connection to mysql) ...
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $conn);
$re = mysql_query('SHOW VARIABLES LIKE "%character_set%";')or die(mysql_error());
while ($r = mysql_fetch_assoc($re)) {var_dump ($r); echo "<br />";} exit;
?>
All important variables are now utf-8 and we can safely use INSERTs or SELECTs with mysql_escape_string($var) without any encoding functions.
nabeelmoidu at gmail dot com ¶
16 years ago
Here's an example of how to use this feature :
I'm using PHP 5.2.5 from http://oss.oracle.com/projects/php/
I wanted to store arabic characters as UTF8 in the database and as suggested in many of the google results, I tried using
mysql_query("SET NAMES 'utf8'");
and
mysql_query("SET CHARACTER SET utf8 ");
but it did not work.
Using the following, it worked flawlessly
$link = mysql_connect('localhost', 'user', 'password');
mysql_set_charset('utf8',$link);
Once this is set we need not manually encode the text into utf using utf8_encode() or other functions. The arabic ( or any UTF8 supported ) text can be passed directly to the database and it is automatically converted by PHP.
For eg.
<?php
$link = mysql_connect('localhost', 'user', 'password');
mysql_set_charset('utf8',$link);
$db_selected = mysql_select_db('emp_feedback', $link);
if (!$db_selected) { die ('Database access error : ' . mysql_error());}
$query = "INSERT INTO feedback ( EmpName, Message ) VALUES ('$_empName','$_message')";
mysql_query($query) or die('Error, Feedback insert into database failed');
?>
Note that here $_empName is stored in English while $_message is in Arabic.
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google