コマンドプロンプトからのSQL文はsjis
背景画像:wikipedia:鉛筆
WindowsにインストールしたMySQLへのインサート文などをコマンドプロンプトから入力しようとしたら、日本語が入力できませんでした。
コマンドプロンプトは、sjisしか扱えないのかもしれません。
mysql> set NAMES 'sjis';
インサート文を書く前に上の一行を追加
コマンドプロンプトで日本語に切り替えるときには、altキーを一緒に
レコードの取り出しでも、文字化けが発生しました。phpMyAdmin等は、正常に表示されている。(utf8)
my.iniは default-character-set=utf8
<?php mysql_connect($host, $user, $password); $sql = "SET CHARACTER SET utf8"; mysql_query($sql); mysql_select_db($database); $query = "select * from counter"; $result = mysql_query($query); while ($row = mysql_fetch_assoc($result)) { echo $row["id"]." "; echo $row["tag"]." "; echo $row["time"]."<br>"; } mysql_free_result($result);
で、文字化けは解消しました。
スクリプトからは、SET NAMES を 使ってはいけないらしい。
see:SET NAMESは禁止
$sql = "SET NAMES utf8";
PEARを使ってみる。
<?php require_once 'MDB2.php'; $dsn = array( 'phptype' => 'mysql', 'username' => '', 'password' => '', 'hostspec' => 'localhost', 'database' => 'test' ); //接続 $mdb2 =& MDB2::factory($dsn); $sql = "SET CHARACTER SET utf8 "; $mdb2->query($sql); $mdb2->setFetchMode(MDB2_FETCHMODE_ASSOC); $result = $mdb2->queryAll('SELECT * FROM counter'); echo "<pre>"; print_r($result); echo "</pre>";
コマンドプロンプト
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.C:\Documents and Settings\SAMPLE>pear install mdb2;
downloading MDB2-2.4.1.tgz ...
Starting to download MDB2-2.4.1.tgz (119,790 bytes)
..........................done: 119,790 bytes
install ok: channel://pear.php.net/MDB2-2.4.1
MDB2: Optional feature fbsql available (Frontbase SQL driver for MDB2)
MDB2: Optional feature ibase available (Interbase/Firebird driver for MDB2)
MDB2: Optional feature mysql available (MySQL driver for MDB2)
MDB2: Optional feature mysqli available (MySQLi driver for MDB2)
MDB2: Optional feature mssql available (MS SQL Server driver for MDB2)
MDB2: Optional feature oci8 available (Oracle driver for MDB2)
MDB2: Optional feature pgsql available (PostgreSQL driver for MDB2)
MDB2: Optional feature querysim available (Querysim driver for MDB2)
MDB2: Optional feature sqlite available (SQLite2 driver for MDB2)
MDB2: To install optional features use "pear install pear/MDB2#featurename"C:\Documents and Settings\SAMPLE>pear install MDB2_Driver_mysql;
downloading MDB2_Driver_mysql-1.4.1.tgz ...
Starting to download MDB2_Driver_mysql-1.4.1.tgz (36,481 bytes)
..........done: 36,481 bytes
install ok: channel://pear.php.net/MDB2_Driver_mysql-1.4.1
C:\Documents and Settings\SAMPLE>
.