とりあえずプログラムを読んでみる。
通常アクセス(閲覧)は問題ない。もちろん変更や新規追加も問題ない。
動作の上では問題ないが、データベースには文字化けして記載されている。
どのような流れでこれを元に戻しているのか探ってみる。
スポンサードリンク
index.php に以下のようなものがある
$title = ' - ' . $faq->getRecordTitle($id);
index.phpを読んでもコンバート処理などしている様子はないので、どうやら正しい結果が既に渡されているようだ。
それでは $faq は何か?同ファイルに次のようにある
$faq = new PMF_Faq($current_user, $current_groups);
それでは PMF_Faq はどれか。
/inc/Faq.php がそれのようだ。
public function getRecordTitle($id)
{
if (isset($this->faqRecord['id']) && ($this->faqRecord['id'] == $id)) {
return $this->faqRecord['title'];
}
$query = sprintf( "SELECT thema FROM %sfaqdata WHERE id = %d AND lang = '%s'", SQLPREFIX, $id, $this->language ); $result = $this->db->query($query);
if ($this->db->num_rows($result) > 0) {
while ($row = $this->db->fetch_object($result)) {
$output = $row->thema;
}
} else {
$output = $this->pmf_lang['no_cats'];
}
return $output; }
ここでも特に変換処理は無いようだ。
/inc/PMF_DB/Mssql.php には次のようにある。
function query($query)
{
$this->sqllog .= pmf_debug($query);
return @mssql_query($query, $this->conn);
}
ここでも特に変換処理は無い。
---
ここまでくるとデータベース作成そのものに問題があったのではないかと疑うようになった。
今回はcoreserverを利用している。このサーバは簡単にDBを作成することができる。
MySQLのDBはEUC-JP、Unicode、Shift-JISが選べる(=SQLを発行して作っていない)
サポートされている文字種を調べるには次のSQLを発行すると得ることができる。
SHOW CHARACTER SET
得られた結果は次のとおりだ
| Charset | Description | Default collation | Maxlen |
|---|---|---|---|
| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 |
| dec8 | DEC West European | dec8_swedish_ci | 1 |
| cp850 | DOS West European | cp850_general_ci | 1 |
| hp8 | HP West European | hp8_english_ci | 1 |
| koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 |
| latin1 | cp1252 West European | latin1_swedish_ci | 1 |
| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |
| swe7 | 7bit Swedish | swe7_swedish_ci | 1 |
| ascii | US ASCII | ascii_general_ci | 1 |
| ujis | EUC-JP Japanese | ujis_japanese_ci | 3 |
| sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 |
| hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 |
| tis620 | TIS620 Thai | tis620_thai_ci | 1 |
| euckr | EUC-KR Korean | euckr_korean_ci | 2 |
| koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 |
| gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 |
| greek | ISO 8859-7 Greek | greek_general_ci | 1 |
| cp1250 | Windows Central European | cp1250_general_ci | 1 |
| gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 |
| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |
| armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 |
| utf8 | UTF-8 Unicode | utf8_general_ci | 3 |
| ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 |
| cp866 | DOS Russian | cp866_general_ci | 1 |
| keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 |
| macce | Mac Central European | macce_general_ci | 1 |
| macroman | Mac West European | macroman_general_ci | 1 |
| cp852 | DOS Central European | cp852_general_ci | 1 |
| latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 |
| cp1251 | Windows Cyrillic | cp1251_general_ci | 1 |
| cp1256 | Windows Arabic | cp1256_general_ci | 1 |
| cp1257 | Windows Baltic | cp1257_general_ci | 1 |
| binary | Binary pseudo charset | binary | 1 |
| geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 |
| cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 |
| eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 |
データベースの現在の設定は次のSQLで得ることができる
SHOW VARIABLES LIKE 'char%';
| Variable_name | Value |
|---|---|
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql-src-5.1.22/share/mysql/charsets/ |
照合順序は次の通り
| 操作 | 照合順序 | サイズ |
| faq_faqadminlog | MyISAM | utf8_general_ci |
| faq_faqcaptcha | MyISAM | utf8_general_ci |
| faq_faqcategories | MyISAM | utf8_general_ci |
| faq_faqcategoryrelations | MyISAM | utf8_general_ci |
| faq_faqcategory_group | MyISAM | utf8_general_ci |
| faq_faqcategory_user | MyISAM | utf8_general_ci |
| faq_faqchanges | MyISAM | utf8_general_ci |
| faq_faqcomments | MyISAM | utf8_general_ci |
| faq_faqconfig | MyISAM | utf8_general_ci |
| faq_faqdata | MyISAM | utf8_general_ci |
| faq_faqdata_group | MyISAM | utf8_general_ci |
| faq_faqdata_revisions | MyISAM | utf8_general_ci |
| faq_faqdata_tags | MyISAM | utf8_general_ci |
| faq_faqdata_user | MyISAM | utf8_general_ci |
| faq_faqglossary | MyISAM | utf8_general_ci |
| faq_faqgroup | MyISAM | utf8_general_ci |
| faq_faqgroup_right | MyISAM | utf8_general_ci |
| faq_faqlinkverifyrules | MyISAM | utf8_general_ci |
| faq_faqnews | MyISAM | utf8_general_ci |
| faq_faqquestions | MyISAM | utf8_general_ci |
| faq_faqright | MyISAM | utf8_general_ci |
| faq_faqsearches | MyISAM | utf8_general_ci |
| faq_faqsessions | MyISAM | utf8_general_ci |
| faq_faqstopwords | MyISAM | utf8_general_ci |
| faq_faqtags | MyISAM | utf8_general_ci |
| faq_faquser | MyISAM | utf8_general_ci |
| faq_faquserdata | MyISAM | utf8_general_ci |
| faq_faquserlogin | MyISAM | utf8_general_ci |
| faq_faquser_group | MyISAM | utf8_general_ci |
| faq_faquser_right | MyISAM | utf8_general_ci |
| faq_faqvisits | MyISAM | utf8_general_ci |
| faq_faqvoting | MyISAM | utf8_general_ci |
| 32 テーブル | MyISAM | utf8_general_ci |
うーん。。。

コメント